gpt4 book ai didi

C# Linq 对字典列表进行过滤

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:19 25 4
gpt4 key购买 nike

我在不知道如何正确使用 LINQ 时遇到了问题。

我有一个 ListDictionaries(string, object) 像这样:

[0] -> "field1":1500, "field2":"dog", "field3":"blue"
[1] -> "field1":1700, "field2":"cat", "field3":"brown"
[2] -> "field1":1500, "field2":"horse", "field3":"white"
[3] -> "field1":1900, "field2":"cow", "field3":"black"

我需要从中得到一个 ListDictionaries,只有 "field1" 设置为 1500 的字典,所以输出应该是:

[0] -> "field1":1500, "field2":"dog", "field3":"blue"
[1] -> "field1":1500, "field2":"horse", "field3":"white"

我试过这样做,但我确信我离正确答案还差得很远。

List<Dictionary<string, object>> output = input.SelectMany(r => r).Where(r => (r.Key == "field1") && (r.Value == 1500)).ToList();

你能给我一个解决方案吗?

非常感谢。

最佳答案

这应该有效:

var result = 
dicts.Where(
d => d.TryGetValue("field1", out object value) && value is int i && i == 1500
).ToList();

这会挑选出列表中所有具有名为 field1 的字段(通过 d.TryGetValue())并且该值也是 的字典1500.

请注意,因为字典包含object 而不是int,所以您需要使用is int 检查值是否为int

另请注意,此语法使用 C# 版本 7 或更高版本。

关于C# Linq 对字典列表进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49133103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com