0

我有一个奇怪的情况。我使用 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 中返回数字,而没有要枚举的记录。

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

4

1 回答 1

0

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

于 2014-11-27T15:13:06.140 回答