c# - 如何在 C# 中使用 lambda 表达式使用数组进行比较

标签 c# linq lambda

我想知道是否有任何方法可以通过使用包含比较元素的数组来缩短 lambda 中的比较,而不是逐个写入元素。

实际上,我有一个 Dictionary<K,V>名为 litemList 的变量已填充数据。我想要另一个Dictionary<K,V>仅包含 litemList 的一些的变量。

lfilteredItemlist = litemList.Where(m => m.Key == "Name", m.Key == "Surname")
                             .ToDictionary(m => m.Key, m => m.Value);

这段代码工作得很好,但是当我有 10 个或更多的来过滤并且它们可能会随着时间而改变(甚至由用户选择)时,这个解决方案是不可行的。 我正在寻找一些解决方案,假设有一个包含所有要过滤的键的数组,我可以使用如下内容:

filterArray = {"Name", "Surname"};

lfilteredItemlist = litemList.Where(m => m.Key == filterArray)
                             .ToDictionary(m => m.Key, m => m.Value);

我很确定有一个方法,因为我在找Dynamic LINQ的资料时看到过它。 。不幸的是我再也找不到这篇文章了Scott Guthrie在他的博客中没有提及。

谢谢

弗朗西斯科

最佳答案

如何将代码更改为:

lfilteredItemlist = litemList.Where(m => filterArray.Contains(m.Key))
                         .ToDictionary(m => m.Key, m => m.Value);

关于c# - 如何在 C# 中使用 lambda 表达式使用数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5856382/

相关文章:

c# - 复制到数据表时,值对于 Int16 来说太大或太小

c# - 如何在 C# 中最优雅地从匿名集合创建空集合?

c# - Lambda 表达式中的动态 Where 子句

c++ - 如何为通用 lambda 参数定义模板参数?

c# - For 循环直到 SQL 命令返回某个值

c# - 编译器错误 CS1002;预期的 C#

linq - 这个 PredicateBuilder 类是如何工作的?

math - 取一些数据,返回一个纯分段函数

c# - GridView ASP .NET 中标题文本的垂直显示

linq - LINQ 查询中的 DayOfWeek