我如何使用Linq进行IN语法

Dot*_*ude 7 c# linq linq-to-objects

我需要使用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)
Run Code Online (Sandbox Code Playgroud)

jjn*_*guy 8

你可以用一个简单的Contains.

var a = Members.Where(x => arr.Contains(x.City));
Run Code Online (Sandbox Code Playgroud)


Gab*_*ams 5

我知道这已经很旧了,但我认为这会对这篇文章的新读者有所帮助。

与code4life类似,我使用扩展方法。但不同之处在于我使用泛型,因此这适用于多种类型。

您可以阅读我的博客文章以了解有关如何执行此操作的更多信息,但主要思想是:

通过将此扩展方法添加到您的代码中:

public static bool IsIn<T>(this T source, params T[] values)
{
    return values.Contains(source);
}
Run Code Online (Sandbox Code Playgroud)

您可以像这样执行搜索:

var a = Members.Where(x => x.City.IsIn("Chicago", "NewYork");
Run Code Online (Sandbox Code Playgroud)

它适用于任何类型(只要您创建一个好的 equals 方法)。当然可以是任何值类型。