Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C Linq XML,检查特定值并解析为数组_C#_Xml_Linq - Fatal编程技术网

C# C Linq XML,检查特定值并解析为数组

C# C Linq XML,检查特定值并解析为数组,c#,xml,linq,C#,Xml,Linq,我有以下XML: <?xml version="1.0" ?> <NewDataSet> <Data> <ElementDefinition> <ID>1</ID> <QUANTITY>0</QUANTITY> </ElementDefinition> <ElementDefinition> <ID&

我有以下XML:

<?xml version="1.0" ?>
<NewDataSet>
   <Data>
     <ElementDefinition>
      <ID>1</ID>
      <QUANTITY>0</QUANTITY>
     </ElementDefinition>
     <ElementDefinition>
      <ID>2</ID>
      <QUANTITY>1</QUANTITY>
     </ElementDefinition>
   </Data>
</NewDataSet>
但这似乎不起作用。使用上述XML,数组应包含1项,但保持为0

之后,我需要为数组中的每个ElementDefinition创建一个字符串,该字符串必须包含相应ID元素的值

为此,我尝试:

foreach (string x in xe)
{
   string ID = //not sure what to do here
}

你想要这样的东西:

var ids = f.Root.Descendants("ElementDefinition")
           .Where(x => x.Element("QUANTITY").Value != "0")
           .Select(x => x.Element("ID").Value);
由于需要ID,因此选择所有数量节点没有多大帮助。相反,请准确选择您在问题中指定的内容:

所有ElementDefinitions子代SelementDefinition,其数量的值不是0,其中x=>x.ElementQUANTITY.Value!=0从结果节点中,选择ID Selectx=>x.ElementID.Value。

Yo可以替换为

var xe = f.Root.Elements("Data/ElementDefinition/QUANTITY").Where(x => x.Value != "0").ToArray();

谢谢你的快速回答!它现在似乎起作用了。一个“noob”问题:如何将每个ID写入字符串将是一个XML WriteString函数?我需要使用foreach吗?您已经在IDs变量中将所有ID作为字符串。你还需要什么?我需要每个单独的ID到一个单独的字符串中。但是如果我理解正确的话,现在它是一个字符串数组。所以我可以在ids中使用foreachid?
var xe = f.Root.Elements("Data/ElementDefinition/QUANTITY").Where(x => x.Value != "0").ToArray();