"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
在 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