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,这有点棘手.
非常感谢你!
这应该工作:
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)