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

IQueryable<TestClass> resultSet = (from w in ......).Distinct().Take(1000);

我的TestClass是什么样的
public TestClass
{
public string TestPRop { get; set; }
 //..has some 20 properties
}

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

最佳答案

截然不同将在拍前处理。仔细检查您的Distinct是否正常运行。这是一个工作示例:

var dataset = new int[]
{
    1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10
};

var query = from o in dataset select o;
var result = query.Distinct().Take(6);

// result = `1,2,3,4,5,6`

我怀疑您的问题是使用SQL的与众不同。在这种情况下,您还可以使用分组来获得所需的结果。
var distinctById = from o in query
                   group o by o.Id into uniqueIds
                   select uniqueIds.FirstOrDefault();

关于c# - linq查询Take()优先于Distinct()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32360015/

10-10 18:28
查看更多