如何在C#中使用lambdas使用数组进行比较

时间:2011-05-02 11:07:58

标签: c# linq lambda

我想通过使用包含比较元素的数组来确定是否有任何方法缩短 lambdas中的比较,而不是逐个编写元素。

实际上,我有一个名为 litemList Dictionary<K,V>变量已填充数据。我想要另一个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没有在他的博客中提到它。

由于

弗朗西斯

1 个答案:

答案 0 :(得分:5)

如何将代码更改为:

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