Как искать LINQ со многими параметрами в одном столбце? - PullRequest
1 голос
/ 06 октября 2010

Например, есть эта таблица:

Name | BodyType
----------------
John  | 1
Ted   | 2
Daniel| 3
George| 4

В моем приложении я отмечаю "1", "2" и "3"И я должен найти 3 ряда (Джон, Тед, Дэниел), а НЕ Джордж.Как я могу получить этот запрос в LINQ?(не использовать where p.BodyType!=4) Использовать логику ИЛИ

var all = dataContext.Users;
foreach (searchParameter in search)
  ...?

Ответы [ 2 ]

4 голосов
/ 06 октября 2010

Поместите необходимые идентификаторы в List<int>, а затем Contains:

var bodyTypes = GetBodyTypesFromSearchParameters();
var query = dataContext.Users.Where(user => bodyTypes.Contains(user.BodyType));
1 голос
/ 06 октября 2010

По сути, вам необходимо получить параметры в контейнер Enumerable, а затем использовать метод Contains LINQ при выполнении итерации таблицы с помощью метода Where:

    var parameters = new[] { 1, 2, 3};
    var list = new[] { new { Name = "John", BodyType = 1 }, new { Name = "Ted", BodyType = 2 }, new { Name = "Daniel", BodyType = 3 }, new { Name = "George", BodyType = 4 } };
    var result = list.Where(c => parameters.Contains(c.BodyType));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...