使用LINQ搜索XML文档

我有一个与此类似的xml文档:

           ...  

我想基于属性ID的值返回整个MainItem元素。 如果Attribute ID等于2,那么有效,然后返回MainItem元素。

我无法解决如何使用LINQ执行此操作。 谷歌似乎有很多信息,但我似乎无法找到我正在寻找的东西。

帮助不大?

TIA

🙂

它可能是这样的:

  XDocument doc = XDocument.Load("myxmlfile.xml"); XElement mainElement = doc.Element("Root") .Elements("MainItem") .First(e => (int)e.Attribute("ID") == 2); // additional work 

这个怎么样:

 // load your XML XDocument doc = XDocument.Load(@"D:\linq.xml"); // find element which has a ID=2 value XElement mainItem = doc.Descendants("MainItem") .Where(mi => mi.Attribute("ID").Value == "2") .FirstOrDefault(); if(mainItem != null) { // do whatever you need to do } 

我稍微改变了你的XML以获得值:

    value 1 val 2         

有了这个LINQ:

 XDocument xmlDoc = XDocument.Load(@"C:\test.xml"); var result = from mainitem in xmlDoc.Descendants("MainItem") where mainitem.Attribute("ID").Value == "1" select mainitem; foreach (var subitem in result.First().Descendants()) { Console.WriteLine(subitem.Value); } Console.Read(); 

从这里: 如何:过滤属性(XPath-LINQ到XML)

 // LINQ to XML query IEnumerable list1 = from el in items.Descendants("MainItem") where (string)el.Attribute("ID") == "2" select el; // XPath expression IEnumerable list2 = items.XPathSelectElements(".//MainItem[@ID='2']");