用Linq选择词典词典

时间:2017-09-09 06:03:36

标签: c# .net linq dictionary

我有以下结构:

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

这可以通过foreach非常简单,但我想通过linq在一个查询中完成。

所以,我想通过linq检索MyObject何时遇到我的过滤器。例如:

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

我希望匹配的记录返回上面的数据结构 - 因此查询返回如上所述的词典字典。我不希望它只返回匹配的MyOjbect。

2 个答案:

答案 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);