MVC初学者。 在从另一个帖子实现解决方案时,我现在有一个不同的问题。我理解问题的要点,但不明白如何解决它。
我已经将某种类型更改为groupby:
ViewModel.Lots = from x in (db.Subdivisions.SelectMany(sd => sd.Lots))
group x by x.Num_of_steps == 0 ? 3 : x.Num_of_steps < 115 ? 1 : 2 into g
orderby g.Key
select g.OrderBy(g1 => g1.LotName);
我现在收到此错误:
无法隐式转换类型'System.Linq.IQueryable&lt; System.Linq.IOrderedEnumerable&lt; MVCBSV.Models.Lot&gt;&gt;'到'System.Collections.Generic.IEnumerable&lt; MVCBSV.Models.Lot&gt;'。存在显式转换(您是否错过了演员?)
在阅读了几篇帖子之后,我做了一些改动,例如:
select g.OrderBy(g1 => g1.LotName).AsQueryable().ToList()
在这种情况下,消息将更改为:
无法隐式转换类型'System.Linq.IQueryable&lt; System.Collections.Generic.List&lt; MVCBSV.Models.Lot&gt;&gt;'到'System.Collections.Generic.IEnumerable&lt; MVCBSV.Models.Lot&gt;'。存在显式转换(您是否错过了演员?)
有人可以帮助 - 并解释他们为什么这样做,他们在哪里做到了所以我能理解。 感谢
答案 0 :(得分:0)
ViewModel.Lots = (from x in (db.Subdivisions.SelectMany(sd => sd.Lots))
group x by x.Num_of_steps == 0 ? 3 : x.Num_of_steps < 115 ? 1 : 2 into g
orderby g.Key
select g.OrderBy(g1 => g1.LotName).ToList()).SelectMany(x => x).ToList();
您需要获得IEnumerable<Lot>
。g.OrderBy(g1 => g1.LotName)
为每个组返回IOrderedEnumerable<MVCBSV.Models.Lot>
。首先,您应该使用SelectMany
展平您的结果,然后使用{{1}在这种情况下,最后ToList
可能是不必要的,无论如何......