Как я могу использовать List <> как условие для моего предложения where с Linq? - PullRequest
1 голос
/ 11 января 2009

Итак, я несколько часов бился головой о стену пословицы, и я подумал, что увижу, решит ли кто-нибудь эту проблему раньше ...

У меня есть List<string> значений, которые я хочу использовать в качестве фильтров при поиске. В старые времена я встраивал в запрос строку WHERE field = 'a' OR field = 'b' OR field = 'C'. Но со сборкой Linq это длинное предложение WHERE довольно сложно. Я надеялся, что это сработает:

var results = from x in x.table
              where x.Equals(List<string>)
              select x;

Увы, компилятор не настолько умен, чтобы разбить List <> на запрос WHERE field = 'a' OR field ='b'. Я продвинул этот процесс в качестве цикла foreach на List<string>, но он передает обработку клиенту, когда я хочу, чтобы эта часть выполнения выполнялась на SQL Server. Живу ли я здесь в мире фантазий или есть ли способ сделать это?

1 Ответ

6 голосов
/ 11 января 2009

Вы можете использовать Contains ()

List<string> yourList = new List<string> { "A", "B", "C" };

var results = from x in x.table
              where yourList.Contains(x)
              select x;

Если это Linq to SQL, сгенерируется предложение WHERE field IN ('A', 'B', 'C').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...