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

Cic*_*ami 2 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);
Run Code Online (Sandbox Code Playgroud)

此代码的工作完美,但我有10个或更多的来过滤和他们可能会随时间变化(甚至由用户选择),该解决方案是不可行的.我正在寻找一些解决方案,假设有一个数组用于过滤键,我可以使用这样的东西:

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

lfilteredItemlist = litemList.Where(m => m.Key == filterArray)
                             .ToDictionary(m => m.Key, m => m.Value);
Run Code Online (Sandbox Code Playgroud)

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

谢谢

弗朗切斯科

Øyv*_*hen 5

如何将代码更改为:

lfilteredItemlist = litemList.Where(m => filterArray.Contains(m.Key))
                         .ToDictionary(m => m.Key, m => m.Value);
Run Code Online (Sandbox Code Playgroud)