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

本文关键字:数字 Take-number Count after Take 返回 Enumerable | 更新日期: 2023-09-27 18:32:19

我有一个奇怪的情况。我有以下查询使用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()从 take 返回数字,而没有要枚举的记录。

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

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

如果你想检查查询中有多少行,你需要在 Take() 之前执行 Count()。Take 返回 IEnumerable,这意味着查询将在瞬间执行,届时您将执行 ToList、First/FirstOrDefaut、Last/LastOrDefault 等。有关 IEnumerable 的更多信息