检查Linq-to-xml中是否存在结果

Nat*_*teD 2 c# linq-to-xml

我正在使用Linq-to-XML来做一个简单的"这个用户注册"检查(这里没有安全性,只是为桌面应用程序制作注册用户列表).如何处理来自这样的查询的结果:

var people = from person in currentDoc.Descendants("Users")
                     where (string)person.Element("User") == searchBox.Text
                     select person;
Run Code Online (Sandbox Code Playgroud)

我理解使用结果的最常见方式是类似的

foreach (var line in people){
    //do something here
}
Run Code Online (Sandbox Code Playgroud)

但是person,如果这个人没有注册,你会怎么做?

我在这个网站和MSDN上环顾四周,还没有找到一个非常明确的答案.

额外信用:对people包含的内容给出一个很好的解释.

Kri*_*s C 5

我已经读过在这些情况下最好使用Any()而不是Count()== 0.例如

bool anyPeople = people.Any();
if (anyPeople) {
Run Code Online (Sandbox Code Playgroud)

有关在Linq中使用Count()的性能影响的更多讨论,请参阅http://rapidapplicationdevelopment.blogspot.com/2009/07/ienumerablecount-is-code-smell.html,尤其是对于IEnumerable,其中整个集合通过迭代Count()方法.

也可以使用Any()可以更清楚地解释你的意图Count()