LINQ到XML的c# where子句
本文关键字:where 子句 XML LINQ | 更新日期: 2023-09-27 18:05:55
我在xml中有一个片段:
<result index="0" status="0">
<test field="aaa">value_a</test>
<test field="bbb">value_b</test>
<one>
<name></name>
<res1></res1>
</one>
<two>
<name></name>
<res2></res2>
</two>
<answer></answer>
<error></error>
</result>
var rez = from item in doc.Descendants("result")
where
select item;
foreach (var item in rez)
{
item.Element("res1").SetValue(x);
item.Element("res2").SetValue(y);
}
我在"where"里面写什么来选择一个项目("result"块),其中元素"test"的属性"aaa"有value_a,元素"test"的属性"bbb"有value_b
有几种不同的可能性,但为了清晰起见,我选择取出值对,并可能略微提高性能。如果test元素的#值很高,则可以将testPairs创建为字典。
var rez = from item in doc.Descendants("result")
let testPairs = item.Elements("test")
.Select(t => Tuple.Create((string)t.Attribute("field"), (string)t)).ToArray()
where
testPairs.Any(t => t.Item1=="aaa" && t.Item2=="value_a") &&
testPairs.Any(t => t.Item1=="bbb" && t.Item2=="value_b")
select item;
我不确定可能这就是你的意思
where item.Element("test").Value == "something"
&& item.Element("test").Attribute("field").Value =="aaa"