gpt4 book ai didi

c# - 使用字典在 DataTable 上动态构建条件

转载 作者:行者123 更新时间:2023-11-30 20:42:56 25 4
gpt4 key购买 nike

目前我可以查询我的DataTable (dtContacts) 像这样:如果我正在寻找一个人 FirstName是“约翰”和LastName是“史密斯”。我的结果将是

DataTable dt = dtContacts.AsEnumerable().Where(c => c.Field<string>("FirstName") == "John" && c.Field<string>("LastName") == "Smith").CopyToDataTable();

但是这样的静态查询对我没有帮助,因为我的条件可能比这稍微复杂一些。所以我希望我的 LINQ 更动态一些,以便它可以适应以下场景。

我要将我的条件保存在 Dictionary<string,string> 中像这样:

Dictionary<string, string> dicConditions = new Dictionary<string, string>();
dicConditions.Add("FirstName", "John");
dicConditions.Add("LastName", "Smith");
dicConditions.Add("IsCustomer", "Yes");

请注意,我们可以向该字典添加任意数量的条件。让我们假设主要的 DataTable dtContacts 始终包含字典键中提到的列名称,因此我们不需要每次都检查它。

在新版本中,我们希望 LINQ 根据 dicConditions 执行操作并返回所有 FirstName 的值是“约翰”,LastName是“史密斯”和IsCustomer是"is"。

这个新的动态 LINQ 查询应该是什么样子?

最佳答案

你可以这样做:

DataTable dt = dtContacts
.AsEnumerable()
.Where(c =>
dicConditions.All(kv => c.Field<string>(kv.Key) == kv.Value)
).CopyToDataTable();

想法是应用 LINQ 两次 - 一次应用到 dtContacts,一次应用到 Where 子句内的 dicConditions

关于c# - 使用字典在 DataTable 上动态构建条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31006230/

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