2011-02-06 3 views
1

私は複数の子孫を取得し、これらの値をクラス内のいくつかのプロパティに渡そうとしています。私が理解できない部分は、子孫の間でどのように把握できますか。複数の子孫間の識別

var elements = 
    from descendant in doc.Descendants().Where(desc => 
    desc.Name == "Name1" || desc.Name == "Name2" || desc.Name == "Name3") 
    select new AppInfo.Names 
    { 
    Name1 = //here I want to get the Name1 descendant .Value 
    Name2 = //here I want to get the Name2 descendant .Value 
    Name3 = //here I want to get the Name3 descendant .Value 
    }; 

このようにすることは可能ですか?または、要素を使って新しい反復を行う必要がありますか? AppInfo.Namesは、名前の配列が単純である場合

+0

私の答えは間違っていたので削除しました。それについて申し訳ありません! – alex

+0

問題なし、アレックス。助けてくれてありがとう。 – Cyan

答えて

2

、これを試してみてください。

var filterNames = new []{"Name1", "Name2", "Name3"}; 
var elements = from descendant in doc.Descendants() 
        .Where(desc =>filterNames.Contains(desc.Name)) 
        select descendant.Value; 
AppInfo.Names = elements.ToArray(); 

EDIT:

var names = AppInfo.Names 
{ 
    Name1 = doc.Descendants("Name1").First().Value, 
    Name2 = doc.Descendants("Name2").First().Value, 
    Name3 = doc.Descendants("Name3").First().Value 
} 
:名前はプロパティである場合、あなたはのようなものを使用することができて

+0

名前1、名前2、名前3はプロパティです。 – Cyan

+0

filterNames.Containsはパラメータとして文字列を取得する必要があります。私は編集しようとしましたが、誰かが私が何を言っているのか分からないと思ったようです。 – Cyan

+0

@naic、あなたのコード全体をここに入れないなら、どうすれば助けになるでしょうか?また、あなたのトーンは、あなたを助けようとしている人々にとっては、むしろ懐疑的です。 – SirDemon