2017-09-09 125 views
0

我有以下結構:選擇詞典的詞典使用LINQ

Dictionary<string,Dictionary<int,MyObject>> GetItForMe; 

這將是通過一個foreach很簡單的事,但我想通過LINQ做一個查詢。

所以,我想通過linq檢索MyObject是否符合我的過濾器。例如:

MyObject.Number == 1 && MyObject.ThisString == "MyString" 

我想匹配記錄返回上述數據結構 - 所以查詢返回上面的字典詞典。我不希望它僅僅返回匹配的MyOjbect。

回答

0

你可以嘗試這樣的事:

var result = GetItForMe.Where(x=>x.Value 
            .Where(y => y.Value.Number == 1 
              && y.Value.ThisString == "MyString")) 
         .ToDictionary(x => x.Key, x => x.Value); 

本質上講,我們應用Where過濾,以理清,我們不希望被列入第二字典的對象。

0

這裏是fiddle

也許您正在尋找這樣的事情

GetItForMe.Where(k => k.Value.Any(ik => ik.Value.MyNum == 1 && ik.Value.MyString == "bar")).ToDictionary(d => d.Key, d => d.Value);