<data> <item id="1"> <child id="1" name="aa"></child> <child id="2" name="bb"></child> <child id="3" name="cc"></child> </item> <item id="2"> <child id="1" name="aa"></child> <child id="2" name="bb"></child> <child id="3" name="cc"></child> </item> </data>
我想用一个linq根据传入的item节点的ID值和child节点的ID值 ,来获取对应的child节点下的name的属性值。 这个linq如何写啊,
public static string GetName(int itemID, int childID) { var x = XElement.Load(@"E:\test.xml"); var value = x.Descendants("item") .SingleOrDefault(e => e.Attribute("id").Value == itemID + "") .Descendants("child") .SingleOrDefault(e => e.Attribute("id").Value == childID + "") .Attribute("name") .Value; return value; }
跟楼上的差不多
谢谢热情的回答!
1 string iditem = "2"; 2 string idchild = "3"; 3 var element = XElement.Parse(xml); 4 var itemEle = element.Descendants("item").Where(r => r.Attribute("id").Value == iditem).First(); 5 var childEle = itemEle.Descendants("child").Where(r => r.Attribute("id").Value == idchild).First(); 6 var name = childEle.Attribute("name").Value;
随手一写,高手勿笑。
谢谢热情的回答!