首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq to SQL vs Access SQL -为什么Take()和TOP不一样?

Linq to SQL vs Access SQL -为什么Take()和TOP不一样?
EN

Stack Overflow用户
提问于 2010-10-21 04:43:18
回答 1查看 82关注 0票数 1

抱歉,我想不出一个更好的标题,但一开始这是一个令人费解的问题。

我正在将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个不同的记录来做到这一点,但这样做似乎有点愚蠢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-21 04:52:31

代码语言:javascript
复制
var topThree = collection.OrderByDescending(c => c).Distinct().Take(3);
var top = collection.Where(topThree.Contains).OrderByDescending(c => c);

这应该是你想要的。您可以轻松地将其包装到一个扩展方法中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3982117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档