代码之家  ›  专栏  ›  技术社区  ›  Ralph Shillington

如何从有序的实体集合中查询每一个第n个值?

  •  0
  • Ralph Shillington  · 技术社区  · 14 年前

    我想每n行查询一个ef4实体集,这样我得到的结果不超过x个。例如,给定一组1000个名字,给我每100个名字(当然按名字排序),这样我就有10个结果。

    对于linqto实体,以任何一种有效的方式,这种事情是可能的吗?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Craig Stuntz    14 年前

    不是在L2S里,但你可以用 ExecuteStoreQuery :

    您需要SQL,例如:

    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
    

    然后编码如下:

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