2009-09-17 5 views
7

와 선택 XML 자손 나는 다음과 같은 XML 구조가 있습니다C 번호 - Linq에

<row> 
    <field name="Id">1</field> 
    <field name="AreaId">1</field> 
    <field name="Name">ת&quot;א</field> 
</row> 
<row> 
    <field name="Id">2</field> 
    <field name="AreaId">4</field> 
    <field name="Name">אבטליון</field> 
</row> 

내가 Linq에 함께 name 노드를 반복 할을. 나는이 시도 :

var items = (from i in doc.Descendants("row") 
        select new 
        { 
         Text = i.Value 

        }).ToList(); 

을하지만 내가가 필요로하는 방법을 작동하지 않았다. 어떤 제안? 내가 생각

string xml = //Get your XML here  
XElement xElement = XElement.Parse(xml); 
//This now holds the set of all elements named field 
var items = 
     xElement 
     .Descendants("field") 
     .Where(n => (string)n.Attribute("name") == "Name"); 

답변

14
var items = doc.Descendants("field") 
       .Where(node => (string)node.Attribute("name") == "Name") 
       .Select(node => node.Value.ToString()) 
       .ToList(); 
10

먼저, XML은 하나의 루트 노드를 가지고 있는지 확인 SQL에 Linq 가장 직접적인 접근 방식입니다 :

var items = (from c in doc.Descendants("field") 
      where c.Attribute("name").Value == "Name" 
      select c.Value 
      ).ToList(); 
+2

레이, 당신은 내 좋아하는. 큰 업. – RhysC

1

: 당신이 XML을로드하기 위해 다음과 같은 코드를 사용할 수 있습니다 후

<rows> 
<row> 
    <field name="Id">1</field> 
    <field name="AreaId">1</field> 
    <field name="Name">ת&quot;א</field> 
</row> 
<row> 
    <field name="Id">2</field> 
    <field name="AreaId">4</field> 
    <field name="Name">אבטליון</field> 
</row> 
</rows> 

: 모든

+7

Linq-to-SQL이 아닌 "쿼리 이해 구문"입니다. –

+0

"ToList()에서 나에게 가져갔습니다" – RhysC