linq查询Take()优先于Distinct()?

Arv*_*897 6 c# linq

我必须使用LINQ选择不同的1000条记录.但是当我看到生成的查询时,它需要1000条记录并对该结果应用不同的记录.

IQueryable<TestClass> resultSet = (from w in ......).Distinct().Take(1000);
Run Code Online (Sandbox Code Playgroud)

我的TestClass会是什么样的,

public TestClass
{
public string TestPRop { get; set; }
 //..has some 20 properties
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以解决这个问题,以便将distinct应用于结果集,然后从不同的结果集中获取1000?

小智 0

您只获取 1000 条记录,然后在代码中对这 1000 条记录应用不同的记录,即使您在 Take() 之前执行了 unique() 操作。

实现此目的的最佳方法是直接从 SQL 查询而不是从代码 IE 获取 1000 条不同的记录

string queryString = "SELECT top 1000 from (select distinct ... from table)";
Run Code Online (Sandbox Code Playgroud)