2009-09-17 33 views
7

とXMLの子孫を選択:C#の - 私は、次のXML構造を持って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は、単一のルートノードを持っていることを確認してくださいLinq to SQLは、最も直接的なアプローチです:

+2

ray 私のお気に入り。大きなアップです。 – 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

関連する問題