【发布时间】:2016-11-30 07:19:30
【问题描述】:
在IQueriable数据(初始计数m)上执行take(n) 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
【问题讨论】:
-
你能展示你的代码吗?
-
那么,你的代码在哪里?
-
“仍然返回 m 值”是什么意思? IQueriable.Take() 不会像“从 cookie 罐中取出 cookie”那样从初始 IQueriable 中取出对象。
-
这是查询提供程序中的错误(或不受支持的功能)。没什么可做的,除了要求查询提供者修复它,或者避免这种情况。
-
LINQ 调用没有任何问题,但是 NHibernate 生成的 SQL 可能不会按照您的想法执行。检查每个调用实际生成的查询
标签: c# linq nhibernate iqueryable