2011-08-01 10 views
0

私はディクショナリを持っています。ディテールオブジェクトのメンバはリストです。私はディクショナリに対するクエリーを作成して、DetailObjectがSubStructure内のフィールドの1つに対して特定の値を持つすべてのアイテムを返すようにしています。例:C#のディクショナリ項目のLINQクエリ

public struct SubStructure 
{ 
    public int Id; 
    public string SubSpecificFile; 
} 

public class DetailedObject 
{ 
    public int Id; 
    public List<SubStructure> subs = new List<SubStructure>(); 
} 

public Dictionary<int, DetailedObject> dict = new Dictionary<string, DetailedObject>(); 

各SubStructureは、0個以上のDetailedObjectインスタンス内に表示されます。 「潜水艦」コレクションは3

+4

のIDを持つ部分構造の項目が含まれている各DetailedObjectについて

私は、例えば、照会したい

「辞書」あなたがいる理由どれでも良い理由SubStructureのための構造体を使用していますか? – spender

+0

構造体を使用するのは、データのみを含むためです。追加の処理は必要ありません。 –

答えて

6
var result = dict1.Where(kvp => kvp.Value.subs.Any(ss => ss.Id == 3)); 
+0

'ToDictionary(x => x.Key、x => x.Value)'を最後に追加すると、もう一度辞書になります。 – Zebi

+0

Id == 3に関連する 'SubSpecificFile'変数のコレクション(例:.ToList())を取得したい場合はどうすればよいですか? – Xarylem

6
dict.Values.Where(d => d.subs.Any(ss => ss.Id == 3)) 
+0

この方法では、各辞書エントリの 'Key'を見逃します。 – Zebi

+0

OPを引用:各クエリーに対して 'query "dict" ...キーを取得する必要はありません。 – spender