我有这段代码
var items = query.Skip(0).Take(25).List();
我想要的是我从我的列表中获得25个入口(列表得到402入口)。 这次电话之后,我从未进入过25次。有人知道为什么吗?
答案 0 :(得分:3)
.Take()
和.Skip()
位于数据库端(例如,在SQL Server上 - Implement paging (skip / take) functionality with this query)转换为类似这样的内容
SELECT col1, col2, ...
FROM ...
WHERE ...
ORDER BY
OFFSET 0 ROWS -- skip 0 rows
FETCH NEXT 25 ROWS ONLY; -- take 25 rows
如果我们的 query
与一个TABLE (无JOIN)相关,那就永远有效。即许多行将导致结果列表中的许多C#项
但是如果一个查询使用JOIN,加入一些集合,我们仍会在数据库端获得25行..
parent_id, child_id
1, 10
1, 11
2, 12
2, 13
...
-- 25 rows
但是这些会导致更少的根实体(参见父1和2有4行)。在转型过程中,这些将仅在少数父母中转换,其中收集的物品数量非常不确定
我的建议是:
在需要分页时不要加入集合。决不。始终在与
star schema
(多对一)相关的联接页面上