2013-05-29 4 views
0

У меня есть форма с сеткой, которая показывает, например, все продукты компании. Кроме того, у меня есть поля и поля для комбо, позволяющие пользователю выбрать, для чего он хочет фильтр, например, фильтр для названия продукта, типа продукта и т. Д. Обратите внимание, что он может комбинировать название продукта и тип продукта и т. Д. ... Также эти поля могут быть пустыми или не выбраны (комбо), поэтому я должен выполнить запрос LINQ для фильтрации продуктов в сетке от того, что пользователь пытался фильтровать. Поскольку есть несколько полей и комбо, которые составляют фильтр, как это сделать? как построить этот запрос?Как создать фильтр с LINQ

Спасибо.

+0

Посмотрите в разделе «Связанные» с правой стороны и поиск. Об этом уже много раз спрашивали. –

+0

проверить эту ссылку http://stackoverflow.com/questions/11014017/dynamic-where-clauses-lambda-or-query-in-c-sharp – vijay

ответ

0

Если структура формы запроса остается тем же, вы можете создать один большой условие, которое игнорирует ограничения на полях, которые не были установлены:

decimal? minPrice = ...; 
decimal? maxPrice = ...; 
string prodName = ...; 
bool noName = string.IsNullOrWhitespace(prodName); 
string prodType = ...; 
bool noType = string.IsNullOrWhitespace(prodType); 
var filteredProducts = context 
    .AllProducts 
    .Where(p => 
     (!minPrice.HasValue || p.Price >= minPrice.Value) 
    && (!maxPrice.HasValue || p.Price <= maxPrice.Value) 
    && (noName || p.Name == prodName) 
    && (noType || p.Type == prodType) 
    ); 
Смежные вопросы