2011-12-21 25 views
1

新しいクラスを選択する大きなネストがあり、うまくいきますが、 "B"の値を持つ "TestDictionary"に新しいKeyValuePairを追加したいと思います。 。入れ子選択で新しい辞書にKeyValuePairを追加

from a ... from b ... 
select new c 
{ 
    TestC = b.Foo, 
    TestDictionary = new Dictionary(b.Parameters.ToDictionary(
        x => x.ParameterKey, x => (object)x.ParameterValue)) 
// .Add(new.. "SomeKey", b.SomeValue) ? 
    }).ToList() 

は、Addメソッドを使用しようとしましたが、それは仕事を得る傾けます。新しく作成された辞書に1つのkeyvalueペアを追加することは可能ですか?事前に

おかげ

/ラッセ

+1

私はこれを推測している 'Dictionary'の'追加(...) 'メソッドからですクラスは、このような動的ステートメント内で使用できる値を返しません。私のアドバイスは、これをリファクタリングすることです。これは、埋め込みLinqステートメントが非常に混乱する可能性があるため、より読みやすいものにすることです。 –

+0

Enumerbale.Concatは2つのIEnumerablesを連結します。これは、b.Parametersに何かを追加して辞書に変換する前に(b.Parametersの複雑さに応じて)役立ちます。 – Chris

+0

しかし、今のところ私はxmasの前にある種のquick'n'dirty修正が必要です:) –

答えて

2

あなたはコレクション初期化子構文を使用することができるはずです。 Add()方法はDictionaryと同じように、あなたは中括弧でそれぞれをラップ、複数のパラメータを取るとき:

from a ... from b ... 
select new c 
{ 
    TestC = b.Foo, 
    TestDictionary = new Dictionary(b.Parameters.ToDictionary(
        x => x.ParameterKey, x => (object)x.ParameterValue)) 
       { 
        {"SomeKey", b.SomeValue}, 
        //{"SomeOtherKey", b.FooBar} //if you had more than one… 
       }; 
}).ToList() 
+0

ありがとうalot Jay :) –

関連する問題