Linq to sql 如何在已分组的项目上而不是在组上分页I分组

Linq to sql 如何在已分组的项目上而不是在组上分页I分组,linq-to-sql,asp.net-mvc-2,igrouping,Linq To Sql,Asp.net Mvc 2,Igrouping,我正在尝试使用skip and take进行I分组,但我不想在分组键上翻页,我想在已分组的项目上翻页。您可以在分组前翻页 在内存中分页这些内容非常容易: var page = ( from g in groups from item in g select item ).Skip(100).Take(20); 它不能很好地转换成sql,这就是为什么没有人回答。问题是,当您请求组的元素时,linq To Sql会按组键重新查询数据库以获取这些元素。这就是为什么排序和分页最好不要

我正在尝试使用skip and take进行I分组,但我不想在分组键上翻页,我想在已分组的项目上翻页。

您可以在分组前翻页


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

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;

问题是我需要以一种方式对组进行排序,然后以另一个值对每个组中的文档进行排序。