Условные запросы Linq - PullRequest
       3

Условные запросы Linq

0 голосов
/ 07 октября 2010

У меня есть выпадающий список, который при выборе извлекает данные из базы данных.В раскрывающемся списке есть много вариантов, и один из них - «Все».Я хочу, чтобы, когда пользователь выбирает опцию «Все», он должен извлекать все из базы данныхКакой хороший способ реализовать эту функцию?

Ответы [ 3 ]

7 голосов
/ 07 октября 2010

С LINQ вы можете легко изменить запрос перед отправкой его в базу данных:

IQueryable<Item> query = dataContext.Items;

if (selectedText != "All")
{
    query = query.Where(item => item.Type == selectedText);
}

List<Item> result = query.ToList();

В качестве альтернативы вы можете написать его в одном запросе:

IQueryable<Item> query = dataContext.Items
    .Where(item => selectedText == "All" || item.Type == selectedText);
1 голос
/ 07 октября 2010

Проверьте значение и выполняйте оператор Where, только если не «All».

var linqQuery = ...
if (selectedValue != "All")
    linqQuery = linqQuery.Where(w => w.Value == selectedValue);
0 голосов
/ 07 октября 2010

Если вы много динамически строите свои запросы, то вам может понадобиться взглянуть на один из действительно классных примеров Linq - «Динамическую библиотеку Linq». У Скотта Гатри есть хорошее сообщение в блоге об этом.

Редактировать: обратите внимание, что в этом конкретном случае вы находитесь справа от предложения where, вам не нужно быть полностью динамичным, и это будет излишним, но если у вас есть ситуация, когда вы также фильтруете динамически то .....

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