2010-11-24 5 views
0

私は(大規模クエリにネストされた)次のクエリを持っている:LINQのクエリToListメソッドは、リストにデータを入れていないのではなく、1つの要素のリスト

PaymentType = (from paymenttype in offer.Elements(myns + "paymentTypes") 
       select paymenttype.Value).ToList() 

mynsはXNamespaceタイプ

です

List<string> PaymentType = new List<string>(); 
:PaymentTypeは次のように定義されて
<offer> 
    <paymentTypes> 
     <paymentType>One String</paymentType> 
     <paymentType>Another string</paymentTYpe> 
    </paymentTypes> 
</offer> 

のようなXMLツリーが見えます

私のコードが実行されると、私は見ていますと、作成された単一の項目です:

PaymentType[0] = "OneStringAnotherString" 

なく

PaymentType[0] = "OneString" 
PaymentType[1] = "AnotherString" 

私は私が間違っているのかを並べ替えることはできません。何か案は?

答えて

1

デバッガでそれを見ると、あなたが戻ってきたものがpaymentTypes要素であることがわかりやすくなります。

 var results = (from paymenttype in offer.Elements("paymentTypes").Elements() 
         select paymenttype.Value).ToList(); 

あなたが探していた2つの文字列を取得します:あなたは一つだけが知っている場合は、最も簡単な変更は、子供を得るために最後に.Elements()を追加することです。

+0

より洗練されたソリューション –

1

例の<paymentTypes>Valueは、"One StringAnother string"です。 <paymentTypes>複数ある場合は、各<paymentTypes>に各<paymentType>からValue

var query = from paymenttype in offer.Element(myns + "paymentTypes") 
            .Elements(myns + "paymentType") 
      select paymenttype.Value; 

List<string> PaymentType = query.ToList(); 

または::

あなたが個別に各<paymentType>からValueを選択する必要が

var query = from paymenttypes in offer.Elements(myns + "paymentTypes") 
      from paymenttype in paymenttypes.Elements(myns + "paymentType") 
      select paymenttype.Value; 

List<string> PaymentType = query.ToList(); 
+0

はい、ネストされたクエリでは、最初の部分を実行できませんでしたが、2つの「from」ステートメントが必要なものです。それはそれを解決した! –

0

これはすべてわかりますpaymentType要素

var paymentTypes = (from paymentType 
        in offer.Descendants(myns + "paymentType") 
        select paymentType.Value).ToList(); 
関連する問題