2010-12-18 10 views
4

this questionと似ているが、私の問題の一部としてLINQを与えたが、最後のステップを避けることが明らかでなければならないようだ。辞書。辞書で特定の値のリストからキーを取得する

私は辞書を持っており、その値が真であるアイテムだけのキーのリストを取得したいと思います。今、私はこれをやっている:

Dictionary<long,bool> ItemChecklist; 
... 


var selectedValues = ItemChecklist.Where(item => item.Value).ToList(); 

List<long> values = new List<long>(); 
foreach (KeyValuePair<long,bool> kvp in selectedValues) { 
    values.Add(kvp.Key); 
} 

は、私はそのループを行わずList<long>に直接行くことができる方法はありますか?

答えて

5

単一のステートメントでこれを行うには:

var values = ItemChecklist.Where(item => item.Value).Select(item => item.Key).ToList(); 
4

Enumerable.Selectを使用してみてください:

List<long> result = ItemChecklist.Where(kvp => kvp.Value) 
           .Select(kvp => kvp.Key) 
           .ToList(); 
+0

うわー。 11秒...ありがとう。あなたはどちらも同じことに答えたので、私はそれをもっと必要とする人にそれを与えました:) –

関連する問題