LINQ to List <KeyValuePair>

tim*_*n42 0 c# linq keyvaluepair

我目前正在开发.NET Framework 4.7.2应用程序.我正在研究从给定数据结构中选择对象的LINQ查询:

List<KeyValuePair<int, Dictionary<string, object>>>
Run Code Online (Sandbox Code Playgroud)

它是动态对象的列表.我需要从列表中选择,其中的所有元素在字典中是真实的,关键是IsDummy在这种情况下.

下图显示了调试模式下的数据结构xyz:

在此输入图像描述

var result = xyz
    .Select(a => a.Value)
    .SelectMany(b => b)
    .Where(c => c.Key == "IsDummy" && (bool)c.Value == true);
Run Code Online (Sandbox Code Playgroud)

我想选择List<KeyValuePair<int, Dictionary<string, object>>>字典中的值对象的类型为boolean并且值为true的位置.

不幸的是我当前的查询无法正常工作.

你知道如何解决这个LINQ查询吗?由于列表中的KeyValuePair和Dictionary,这有点棘手.

非常感谢你!

Tim*_*ter 5

这应该工作:

var result = xyz
    .Where(kv => kv.Value.TryGetValue("IsDummy", out object value) 
                 && value is bool b && b); // pattern matching C#7
Run Code Online (Sandbox Code Playgroud)

非C#7版本:

...
&& value is bool && (bool)value);
Run Code Online (Sandbox Code Playgroud)