【发布时间】:2015-09-02 17:54:41
【问题描述】:
我必须使用 LINQ 选择不同的 1000 条记录。但是当我看到生成的查询需要 1000 条记录并在该结果上应用不同时。
IQueryable<TestClass> resultSet = (from w in ......).Distinct().Take(1000);
我的 TestClass 会是什么样子,
public TestClass
{
public string TestPRop { get; set; }
//..has some 20 properties
}
有什么方法可以解决这个问题以将 distinct 应用于结果集,然后从不同的结果集中取 1000?
【问题讨论】:
-
您是否尝试添加
Skip(0)?也许这会创建一个“offset fetch next”查询而不是前 n 个。 -
您是否尝试过使用组运算符而不是 distinct 来查看这是否会影响操作顺序?
-
尝试
var subquery = (from w in ...).Distinct();,然后尝试result = (from s in subquery where 1==1 select s).Take(1000);。看看这是否会迫使 distinct 成为子查询的一部分。 -
看看 jon skeet 的回答stackoverflow.com/a/1011014/1876572
-
请
resultSet.ToString()并将结果粘贴为您的问题的编辑。这将向我们展示它正在生成什么查询。