MVC 初学者。在实施另一篇文章的解决方案时,我现在遇到了一个不同的问题。我了解问题的要点,但不知道如何解决它。
我已将排序更改为分组依据:
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
<MVCBSV。Models.Lot>>' to 'System.Collections.Generic.IEnumerable '。存在显式转换(您是否缺少强制转换?
在阅读了几篇帖子后,我做了一些更改,例如:
select g.OrderBy(g1 => g1.LotName).AsQueryable().ToList()
在这种情况下,消息将更改为:
无法隐式转换类型"System.Linq.IQueryable
<MVCBSV。Models.Lot>>' to 'System.Collections.Generic.IEnumerable '。存在显式转换(您是否缺少强制转换?
有人可以帮忙吗 - 并解释他们为什么这样做,他们在哪里做的,以便我理解。谢谢
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
展平结果,然后使用 ToList
.无论如何,在这种情况下,最后一个ToList
可能是不必要的......