【发布时间】:2009-12-09 18:59:22
【问题描述】:
所以,我有一小块尖尖的 xml,看起来像这样:
<Groups UseGroup='True'>
<Group>1264,182,1979</Group>
</Groups>
我有一小块 linq 从中获取价值,如下所示:
var group = from a in xml.Descendants("Groups")
select a.Element("Group").Value;
一切都很好,但我不知道如何处理空响应?如果我使用:
if(group != null)
它总是会评估true,因为那里有东西。如果我使用:
if(group.ToString() == "")
它将始终评估为 true,因为对该对象调用的 ToString() 返回 System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Xml.Linq.XElement,System.String] 出于某种原因,我很难过将我的 linq 查询结果转换为字符串,所以我使用 var 因为这似乎是我可以让它工作的唯一方法......
所以问题是,我是否使用了正确的 linq 语法,如果是,我如何判断它是否返回任何内容?
【问题讨论】:
-
您遇到问题是因为您不了解有关查询的最重要事实:查询的值是 THE QUERY。 “组”是指一个对象,它表示“从这个集合中投射这些值”的逻辑操作。 “组”永远不会为空;它是一个代表该操作的对象,并且该对象永远不会为空。
-
如果你想问的是“这个查询是否返回任何结果?”,然后在查询上使用序列运算符。例如,“group.Any()”执行查询,如果返回至少一个值,则返回 true,如果没有返回值,则返回 false。
-
但是让我重复一遍以确保清楚:查询表达式的结果是查询,而不是查询的结果。如果您想要查询的结果,那么您将要做的不仅仅是创建查询。您将不得不以某种方式执行它。
-
啊,谢谢 Eric,这很有帮助 - 我很感激你的解释!
标签: c# xml linq linq-to-xml