永发信息网

asp.net mvc linq 查询 出现类型不能强制转换,怎么解决?

答案:3  悬赏:20  手机版
解决时间 2021-03-24 12:35
  • 提问者网友:箛茗
  • 2021-03-23 16:40
asp.net mvc linq 查询 出现类型不能强制转换,怎么解决?
最佳答案
  • 五星知识达人网友:街头电车
  • 2021-03-23 17:24
如果数据列中没有图片流等大数据,你就老老实实用m就行,如果你想只选择出必要的列,可以在select的时候new Movie出来并只填充要选择的列,或者 自定义一个ViewModel 。追问是select new {} 就可以了,但是指明字段后 ,遍历出的数据就成 string 类型了,不在时model 类型的了,造成 foreach 不能使用,这就是我为什么问这个问题啊.追答你搞错了一点常识,你在select的时候如果只要m.title的话,那选择出来的是title类型的集合,即 string集合的。
并不是按你所理解的“除了title以外的字段都是空或者默认值的movie集合 0 ”
你select new 的时候new 一个class 出来啊,比如new Movie{ }

你的基础不行啊,再回去温习一下吧。追问不是基础不行,我就抱着linq 电子书看了1周时间,基础都才入门,基本的操作理解还行,复杂点的就不行了;

你就说说最终可以怎么写吧,比如那个new movie 怎么写吧,我是完全被它弄晕了。追答你应该先把C#的基础打好,再看linq。
回到这个问题,你就用select m就行,其他可以先不考虑。追问我就为了解决不用select m,而用Select(p => new { p.id, p.title }) 才狂看 linq;但是没结果,所以才问:
因为一个文章页列表页 只需要 id ,title ,date,而txt字段 都是text 类型的,如果放在列表,每次要搜好大的 txt 数据量追答嗯,那你就单独新建个类,里面有title字段,然后select new 类{ title = m.title},for each的时候就用这个新建类当强类型。

或者就还用Movie select new Movie { title = m.title} ,View不用变追问使用 select new Movie 结果

不允许在查询中显式构造实体类型“Mvc4_linq_interface_test.Models.Movie”。
”追答那你就别用实体类型Movie了,自己新建个类吧
全部回答
  • 1楼网友:低血压的长颈鹿
  • 2021-03-23 18:18
做任务的~
  • 2楼网友:舍身薄凉客
  • 2021-03-23 17:50
Title不是Movie类型,当然会转换出错追问转换不转换不是主要的,主要是 要将检索的数据能用foreach 输出就行。追答foreach出问题的关键就在于你放错数据,回去再把C#基础好好巩固一下追问是啊,提示是说明了,数据类型不能进行转换,但是怎么才能成功呢,这才是我想要的答案啊。追答string是不能转换成Movie的,你不可能转换成功的,如果你不知道linq怎么用就别乱用,select m.Title返回的是Title的类型,也就是IEnumerable,你foreach(这里的类型就不能是Movie追问我就是不知道linq 怎么用 才问啊,看了几大本linq电子书了 也没找到一个 同类型的例子,
那foreach 到底 怎么用什么类型? 讲一下嘛。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯