2011-07-19 8 views
0

下の例のように結合がどのように見えるかを考えようとしています。 linqを次のように書くことが可能かどうかを判断するのに役立ちます。Linq - KeyValuePair.Valueがコレクションそのものである辞書に参加する

 List<string> col1; 
     Dictionary<string, List<string>> join2; 

col1の項目が辞書の値リストコレクションに存在するすべてのキーを辞書から選択したいと考えています。

 IEnumerable<string> query = from c1 in col1 
            join kvp in join2 on c1 equals kvp.Value 
            where c1 == "foo" 
            orderby kvp.Key 
            select kvp.Key; 

明らかに、kvp.Valueはリストであり、c1と同等の文字列ではない - 任意のポインタ?また

 IEnumerable<string> query = from kvp in join2 
           where kvp.Value.Contains ("foo") 
           orderby kvp.Key 
           select kvp.Key; 

と参加:あなたが同じ結果をもたらすであろう次「foo」というのを選択している場合

+0

ここで、col1の項目の* all *は値に表示されますか? * col1の項目の* any *が値に表示されますか?注文は重要ですか? 「foo」はどこに来ますか?現時点であなたが達成しようとしていることは本当に不明です。いくつかのサンプルデータを与えてください。 –

+0

ちょっと、ジョンを返すためにKeyValuePairのValueプロパティにあるコレクションをリンクしたかったのです。条件付きの 'foo'部分は、キーを返すために値コレクション内で見つけたい値を示します。私は_Any_マッチの後にいます - したがって、複数のfrom句とwhereを含む条件が自分の要件に一致します。探してくれてありがとう。 –

+0

任意の通話を使用すると、うまくいっているでしょう... –

答えて

0
from kvp in dict 
from e in kvp.Value 
... // join on e here 
0
var result = from c1 in col1.Keys 
      from c2 in col1.Values 
      where c1 == c2 
      select c1; 
1

私が...必要な理由に参加を確認していません

 IEnumerable<string> query = from c1 in col1 where c1 == "foo" from kvp in join2 
           where kvp.Value.Contains (c1) 
           orderby kvp.Key 
           select kvp.Key; 
+0

ありがとうございました - それは私が欲しかったことです - それは簡単な例に煮詰められました。本当の複雑な理由は私のビジネスの場合より意味があります。複数のfromsが可能だったことを認識していなかった、今完璧な意味があります。ありがとうございました!!! –

関連する問題