"Count()" 在 "Take()" 之后 "IQueryable" returns 错误的结果?

"Count()" after "Take()" on "IQueryable" returns wrong result?

IQueriable 数据(初始计数 m)上执行 take(n) linq 方法后,方法 Count() 仍然 returns m值。

执行 ToList() 命令是从 IQueryable 获取实际计数的唯一选项吗?

var data = service.Get();//100 records
var data2 = data.Take(10);

var count = data2.count(); //result 100 - wrong
var count2 = data2.ToList().Count; // result 10 - correct

对于这种情况,您必须使用 ToList(),或者找到替代解决方案,或者自己限制 Count() 的结果(因为正确的值永远不会大于指定给 Take() 的值)。

NHibernate 中的已知错误: https://nhibernate.jira.com/browse/NH-2477