C#XML提取

use*_*412 -1 c# xml linq-to-xml

我的XML看起来如此:

<sensor>
<data>26.7</data>
<data>54.53</data>
<log>false</log>
</sensor>
Run Code Online (Sandbox Code Playgroud)

要检索列表中的数据字段,我使用:

List<string> list = xml.Root.Descendants("sensor").Elements("data").Select(element => element.Value).ToList();
Run Code Online (Sandbox Code Playgroud)

它运作良好.

有时XML看起来像这样(log = true):

<sensor>
<data>26.7</data>
<data>54.53</data>
<log>true</log>
</sensor>
Run Code Online (Sandbox Code Playgroud)

我想忽略这些价值观.我怎样才能做到这一点?

我试过这个:

 var lastUser = xml.Element("response").Descendants("sensor")
                   .First(u => u.Element("data") != null
                                    && u.Element("log").Value == "false");
Run Code Online (Sandbox Code Playgroud)

但我只能检索当然只有第一个值.

Dan*_*rth 6

First如果您不想选择第一个元素,为什么要使用?请Where改用.

var data = xml.Element("response")
              .Descendants("sensor")
              .Where(x => ((string)x.Element("log")) == "false")
              .Elements("data")
              .Select(x => x.Value)
              .ToList();
Run Code Online (Sandbox Code Playgroud)