Помощь с запросом LINQ и несколькими фильтрами клиентов - PullRequest
2 голосов
/ 10 апреля 2011

Я отображаю список продуктов и у меня есть 4 выпадающих списка для фильтрации этих данных.

Как создать запрос LINQ, который может учитывать все остальные текущие значения фильтров без необходимостинаписать каждую возможную комбинацию запроса LINQ для фильтров?

Я хотел бы выбрать производство из выпадающего списка, отобразить эти продукты, а затем иметь возможность фильтровать новые результаты по цвету и т. д. Позже яскрыть фильтры, которые не применяются к новым отфильтрованным результатам.

Этот веб-сайт содержит именно то, что я пытаюсь сделать, с левой стороны.Разница в том, что я выполняю фильтрацию на автоответчике (один фильтр за раз).

1 Ответ

2 голосов
/ 10 апреля 2011

Запрос LINQ на самом деле не обязательно должен быть одним оператором, его можно построить по частям. Когда вы создаете запрос LINQ, он фактически ничего не делает с исходными данными, он просто создает выражение интерфейсов IEnumerable / IQueryable, которые основываются друг на друге. Пока вы не выполняете его, перечисляя его или вызывая метод, подобный ToList(), вы можете продолжать добавлять запрос, и он еще не будет выполнен.

Вы хотите что-то вроде этого:

// create original query, no filters
var query = from x in whatever....;

// add each filter one by one

if (condition1) 
{
    query = query.Where(row => condition 1 expression);
}

if (condition2)
{
    query = query.Where(row => condition 2 expression);
}

if (condition3)
{
    query = query.Where(row => condition 3 expression);
}   

if (condition4)
{
    query = query.Where(row => condition 4 expression);
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...