gpt4 book ai didi

c#:带有多个条件的字典的 Linq

转载 作者:太空狗 更新时间:2023-10-30 00:37:15 25 4
gpt4 key购买 nike

所以我有ListDictionary<string, object>我想用 2 列名称的条件解析 1 个项目:

如果我搜索列名称为“Id”的 1 个项目,我会这样做:

var collection ....

var result = collection.OfType<Dictionary<string, object>>()
.SelectMany(d => d.Where(x => x.Key == "id"))
.Where(x => x.Value?.ToString() == "1234")
.ToList();

我在这里搜索列名称为 Id 的项目它的值(value)是1234这很好用。

现在我想添加一些条件:

我想搜索列名为 Id 的项目和值(value)1234和列名 "Class"我想得到 "Class"列名值。

有什么建议吗?

最佳答案

从根本上说你的 SelectMany正在展平所有 词典中的所有条目。这意味着当您获得键/值对时,您不知道哪对来自哪个字典。在您描述的情况下,您不想这样做。您想要过滤到特定项目,然后选择每个项目的一个方面。

您可以使用下面的代码。我假设 collection类型为 List<Dictionary<string, object>> , 所以你不需要 OfType调用你此刻。

var result = collection
// Filter to items with the correct ID.
.Where(d => d.TryGetValue("Id", out var id) && id?.ToString() == "1234")
// Filter to items containing a "Class" entry
.Where(d => d.ContainsKey("Class"))
// Select the class
.Select(d => d["Class"])
.ToList();

关于c#:带有多个条件的字典的 Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54922728/

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