我需要使用linq链接语法来执行此操作。我有:
string[] arr = new string[] {"Chicago", "NewYork"};
var a = Members.Where(x => x.City == <here I want to get all members in chicago or newyork)
答案 0 :(得分:8)
您可以使用简单的Contains
。
var a = Members.Where(x => arr.Contains(x.City));
答案 1 :(得分:3)
我知道这已经过时了,但我认为这会对这篇文章的新读者有所帮助。
与code4life类似,我使用扩展方法。不过,不同之处在于我使用泛型,因此可以使用多种类型。
您可以阅读我的blog post以查看有关如何执行此操作的详细信息,但主要想法是:
将此扩展方法添加到您的代码中:
public static bool IsIn<T>(this T source, params T[] values)
{
return values.Contains(source);
}
您可以像这样执行搜索:
var a = Members.Where(x => x.City.IsIn("Chicago", "NewYork");
它适用于任何类型(只要你创建一个好的equals方法)。任何值类型肯定。
答案 2 :(得分:0)
静态扩展可以很好地满足您的LINQ需求:
// add this class to your project...
public static class StringExtensions
{
public static bool IsIn(this string target, params string[] testValues)
{
return testValues.Contains(target);
}
}
现在您的原始代码可以像这样更改:
// quick and dirty code:
var a = Members.Where(x => x.City.IsIn("Chicago", "NewYork");
// less quick and dirty code:
string[] arr = new string[] {"Chicago", "NewYork"};
var a = Members.Where(x => x.City.IsIn(arr);