我有一个查询,我喜欢用于分页。使用dapper,我可以进行下面的查询并使用SplitOn,它允许我将SplitOn列左侧的结果分成一个对象,将SplitOn列右侧的结果分成第二个对象。这允许我做的是获得总记录数以及"指定"的记录。仅限页面
SELECT *
FROM (
SELECT
*,1 as SplitOn,
(ROW_NUMBER() OVER(ORDER BY Id )) AS RowNum, COUNT(*) over() as TotalRows
FROM (
SELECT Id, FirstName, LastName FROM Customer
) AS FirstQuery
) AS TEMP
WHERE RowNum BETWEEN 1 + ((@Page - 1) * @PageSize) AND @Page * @PageSize
如果你在第6页的SQL中运行,你会得到:
Id FirstName LastName SplitOn RowNum TotalRows
61 John Luke 1 1 120
62 Jane Sky 1 2 120
63 Boby Doe 1 3 120
64 Sam Ace 1 4 120
65 Dany Table 1 5 120
etc...
我正在尝试用EF6完成同样的工作,但我不能为我的生活找出如何将该查询转换为等效的LinQ表达式。
我意识到使用EF6可能无法实现SplitOn,因此我可以使用单个对象解决这个问题,但我仍然无法弄清楚如何使用LinQ进行查询。