C# C Linq XML,检查特定值并解析为数组
我有以下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 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();