Take后的Enumerable.Count返回Take-number而不是实际数字

时间:2014-11-27 14:42:53

标签: c# linq devexpress xpo

我有一个奇怪的情况正在发生。 我使用Devexpress XPO跟踪查询到MS SQL。

var _elements = (from n in new XPQuery<Elements>( XpoDefault.Session )
                 select n).Take(100);

int count =  _elements.Count();

foreach ( var e in _elements) {
     Display(e);
);

当查询结果为0时,Count()返回100,但不执行foreach语句,因为枚举器没有结果。

如何查看查询中有多少行,只记录100条记录(或更少)?

我不明白为什么Count()会从中返回数字,而没有要枚举的记录。

我希望你能帮助我。 谢谢!

1 个答案:

答案 0 :(得分:0)

如果要检查查询中有多少行,则需要在Take()之前执行Count()。返回IEnumerable,这意味着,当您执行ToList,First / FirstOrDefaut,Last / LastOrDefault等时,该查询将立即执行。More information about IEnumerable