在“IQueryable”上“Take()”之后的“Count()”会返回错误的结果吗?

时间:2016-07-26 14:56:49

标签: c# linq nhibernate iqueryable

IQueriable 数据(初始计数take(n))上执行m linq方法后,方法Count()仍会返回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

1 个答案:

答案 0 :(得分:4)

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

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