2011-12-30 7 views
3

xmlファイルからデータを読み込むための新しいクラスを作成しました。xElement Linq作成リスト

私は私が読みしようとしています

public class Validations 
    { 
     public string id { get; set; } 
     public List<string> lhsList { get; set; } 
     public List<string> rhsList { get; set; } 
    } 

Xmlのようにクラスを宣言している私は、XMLを読むために書かれている

<root> 
<Validation id="val3"> 
    <lhs id='Estimated' /> 
    <lhs id='Newqurter' /> 
    <rhs id='Current' /> 
    <rhs id='FirstQuarter' /> 
    </Validation> 
. 
. 
. 

</root> 

コードは

読むにはどうすればよい
List<Validations> vList = new List<Validations>(); 

vList = (from XElement xele in xdoc.Root.Elements() 
        select new Validations 
        { 
         id = xele.Attribute("id").Value.ToString(), 
         // lhsList = ((xele.Elements().FirstOrDefault(p => p.Name == "lhs").FirstAttribute.Value 
         // rhsList = ((xele.Elements().FirstOrDefault(p => p.Name == "rhs").FirstAttribute.Value 

         }).ToList<Validations>(); 

ですリスト? 私は

lhsList = ((xele.Elements().FirstOrDefault(p => p.Name == "lhs").FirstAttribute.Value).ToList(), 

を試してみましたが、それは動作しません。これを行う他の方法は何でしょうか?次のようにあなたがlhs要素のリストを作成することができます

+1

"動作していません"は、*非常に悪い*問題の説明です。 –

+0

はこの行ではありません})。ToList ();このようなものになろう}})ToList(); – MethodMan

+0

エラー 'string'を 'System.Collections.Generic.List ' –

答えて

6

List<string> lhsElements = xele.Elements("lhs") 
           .Select(el => el.Attribute("id").Value) 
           .ToList(); 

これはxeleの子であるすべてのlhs要素を選択し、その後、彼らの「ID」属性の値を選択します。これをコードとマージする方法を理解するために残しておきます。

+0

それは働きました。私はいつもこの方法を覚えています。 xmlについて学ぶことがたくさんあります。ワオ。 :-) –

+0

確かに...あなたの検証初期化ブロックの中にこのコードを入れてください。 – ColinE

+0

本当にうまくいきました。 –

関連する問題