抱歉,我想不出一个更好的标题,但一开始这是一个令人费解的问题。
我正在将access数据库转换到web上,并且我正在使用linq to sql。
在access数据库中,有一个SQL函数返回前3条记录,按收集的个数降序排列。例如,在一个数据集中,收集的个人数量如下: 37,10,9,9,5,4,1,1,查询(使用TOP 3)返回37,10,9,9,9
这是当前所需的效果,因为此特定结果不需要DISTINCT。
然而,在使用Take(3)的linq-to-sql中,返回的结果是37,10,9 -Take 3条记录。没什么好惊讶的。
我的问题是-如何让linq返回与原始access SQL相同的结果?我知道我可以通过循环遍历代码并检查每条记录直到我得到3个不同的记录来做到这一点,但这样做似乎有点愚蠢。
发布于 2010-10-21 04:52:31
var topThree = collection.OrderByDescending(c => c).Distinct().Take(3);
var top = collection.Where(topThree.Contains).OrderByDescending(c => c);这应该是你想要的。您可以轻松地将其包装到一个扩展方法中。
https://stackoverflow.com/questions/3982117
复制相似问题