我有以下结构:
Dictionary<string,Dictionary<int,MyObject>> GetItForMe;
这可以通过foreach非常简单,但我想通过linq在一个查询中完成。
所以,我想通过linq检索MyObject何时遇到我的过滤器。例如:
MyObject.Number == 1 && MyObject.ThisString == "MyString"
我希望匹配的记录返回上面的数据结构 - 因此查询返回如上所述的词典字典。我不希望它只返回匹配的MyOjbect。
答案 0 :(得分: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
过滤,以便整理出我们不希望被包含在第二个词典中的对象。
答案 1 :(得分:0)
以下是fiddle
可能你正在寻找类似的东西
GetItForMe.Where(k => k.Value.Any(ik => ik.Value.MyNum == 1 && ik.Value.MyString == "bar")).ToDictionary(d => d.Key, d => d.Value);