mvc orderby< .IorderedEnumerable>错误

时间:2014-04-03 01:37:43

标签: c# asp.net-mvc linq

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;'。存在显式转换(您是否错过了演员?)

有人可以帮助 - 并解释他们为什么这样做,他们在哪里做到了所以我能理解。 感谢

1 个答案:

答案 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可能是不必要的,无论如何......