如何从实体的有序集合中查询每个第n个值? [英] How to query every n-th value from an ordered set of entities?

查看:119
本文介绍了如何从实体的有序集合中查询每个第n个值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为第n行查询一个EF 4实体集,这样我得到的结果不超过x个.例如,给定一组1000个名称,给我第100个名称(按名称排序),这样我将得到10个结果.

I would like to query an EF 4 entity set for every nth row, such that I get no more than x results. For example, given a set of 1000 names, give me every 100'th name (sorted by name of course) so that I would have 10 results.

LINQ to Entities是否可以以任何有效的方式实现这种事情?

Is this kind of thing possible with LINQ to Entities, in any kind of efficient manner?

推荐答案

不在L2S中,但是您可以使用

Not in L2S, but you could do this with ExecuteStoreQuery:

您要使用SQL,例如:

You want SQL like:

SELECT 
[Project1].[C1] AS [C1], 
[Project1].[DepartmentId] AS [DepartmentId], 
[Project1].[Code] AS [Code], 
[Project1].[DepartmentName] AS [DepartmentName]
FROM ( SELECT [Project1].[DepartmentId] AS [DepartmentId], [Project1].[Code] AS [Code], [Project1].[DepartmentName] AS [DepartmentName], [Project1].[C1] AS [C1], row_number() OVER (ORDER BY [Project1].[DepartmentName] ASC) AS [row_number]
    FROM ( SELECT 
        [Extent1].[DepartmentId] AS [DepartmentId], 
        [Extent1].[Code] AS [Code], 
        [Extent1].[DepartmentName] AS [DepartmentName]
        1 AS [C1]
        FROM [dbo].[Department] AS [Extent1]
    )  AS [Project1]
)  AS [Project1]
WHERE [Project1].[row_number] % 4 = 0          
ORDER BY [Project1].[DepartmentName] ASC

(或用参数代替我的硬编码4.)

(Or substitute a param for my hard-coded 4.)

然后输入如下代码:

var q = Context.ExecuteStoreQuery<Foo>(
    sql, params);

这篇关于如何从实体的有序集合中查询每个第n个值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆