如何在分组项而不是组上进行IGrouping页面

时间:2010-10-04 10:48:25

标签: linq-to-sql asp.net-mvc-2 igrouping

我正在尝试使用跳过并接受IGrouping,但我不想在已分组的项目上对分组键进行分页。

1 个答案:

答案 0 :(得分:0)

您可以在分组之前对它们进行分页。


将这些内容分页到内存中非常容易:

var page =
 (
  from g in groups
  from item in g
  select item
 ).Skip(100).Take(20);

它没有很好地转换为sql - 这就是没有人回答的原因。问题是当你要求组的元素时,linq To Sql按组键重新查询数据库以获取这些元素。这就是为什么在没有分组的情况下订购和分页更好。

您可以使用三元运算符实现条件排序:

var query = 
from c in Customers
order c by
  c.Name.StartsWith("B") ? 1 :
  c.Orders.Any() ? 2 :
  3,
  c.Name
select c;