Linq 序列不包含任何元素

Linq Sequence contains no elements

我有一个 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

如何正确检查现有元素?

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

你应该做的

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

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

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; & using System.Linq;