LINQ TOP行和排除TOP行

时间:2013-05-27 14:01:10

标签: linq

我必须编写两个LINQ查询,其中一个返回TOP 6行,另一个返回不包括TOP 6行的数据:

TOP 6:
from m in MyTable
take 6
select m.Foo

我需要帮助如何找出第二个查询。

3 个答案:

答案 0 :(得分:1)

试试MyTable.Skip(6)。我认为在查询语法中没有办法做到这一点。详细了解TakeSkip herehere

答案 1 :(得分:0)

使用Except(根据您的C#语法):

var fullList = from m in MyTable select m.Foo;
var top6 = from m in MyTable take 6 select m.Foo;
var top6except = fullList.Except(top6);

这排除了检索到的前6行,而不排除前6行。使用Skip方法实现通用“从第7行开始选择”

答案 2 :(得分:0)

要使用前6行中的所有行,请使用Skip()

var allButFirst6 = (from m in MyTable
  select m.Foo).Skip(6);

请注意,某些LINQ提供商要求订购列表才能使用SkipTake。如果是这种情况,请在使用OrderBySkip之前使用Take订购列表。