2012-06-08 48 views
1

我有下面的XML:內側選擇以XML

<projects> 
    <project> 
     <name>Super 1</name> 
     <types> 
      <type>Art</type> 
      <type>Retro</type> 
     </types> 
    </project> 
    <project> 
     <name>Super 2</name> 
     <types> 
      <type>Retro</type> 
     </types> 
    </project> 
</projects> 

我需要實現SelectProjectsOfType(string type)方法。它應該返回所有的<project>XElement s,其中<types>集合中的內部<type>被列爲其中之一。所以我需要首先分析每個元素中的類型,然後選擇整個項目節點,如果搜索類型存在。這怎麼能在使用LINQ時得到優雅的完成呢?

回答

0
XElement projects = ...; 
string searchTerm = "some-type-of-project"; 

var result = projects.Descendents("project").Where(
    p => p.Descendents("type").Any(t => t.Value == searchTerm) 
);