Linq Sequence不包含任何元素

时间:2015-01-14 17:27:04

标签: c# linq linq-to-xml

我有一个xdocument。

XDocument xd = new XDocument();
var xdocument = XDocument.Parse(@"<Values>
                                <Required>
                                    <DisplayItem>rbProvided</DisplayItem>
                                    <MessageId>38</MessageId>
                                </Required>
                              </Values>");

现在,我正在尝试检查是否存在元素,如果不是我需要添加它。这是我正在尝试的代码

if(xd.Descendants().Elements("Monkey") != null)
  { Do this }

它一直告诉我:

 Sequence Contains No Elements

如何正确检查现有元素?

2 个答案:

答案 0 :(得分:5)

.Elements("Monkey")返回IEnumerable,它不为空(因此您的检查失败),但不包含任何元素。

你应该已经完成​​了

if (xdocument.Descendants.Elements("Monkey").Any())

答案 1 :(得分:0)

检查特定元素,您可以按如下方式编码:

XDocument xd = new XDocument();
var xdocument = XDocument.Parse(@"<Values>
                                    <Required>
                                        <DisplayItem>rbProvided</DisplayItem>
                                        <MessageId>38</MessageId>
                                    </Required>
                                  </Values>");

if(xdocument.Descendants("DisplayItem").Any())
    Console.WriteLine("Whatever...");

不要忘记包括:using System.Xml.Linq;&amp; using System.Linq;