Пользовательский фильтр для linq - PullRequest
1 голос
/ 28 апреля 2009

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

Как динамически добавить пользовательский фильтр в запрос LINQ?

Типичный запрос выглядит так:

var qProducts = from p in db.Products
    where p.IsArchived == false
    order by p.ProductName select p;

Я использую LINQ (IQuerable Toolkit) для доступа к данным в базе данных SQL CE.

Ответы [ 2 ]

4 голосов
/ 28 апреля 2009

Возможно, вы захотите взглянуть на Dynamic LINQ из VS2008 Samples . Тогда вы можете сделать что-то вроде:

var qProducts = db.Products
                  .Where( "IsArchived = {0}", archiveFilterValue )
                  .OrderBy( sortColumn + " " + sortDirection );
0 голосов
/ 28 апреля 2009

вы можете добавлять каждый фильтр динамически, если это необходимо, например ::10000

if (txtFilter1.Text!="") qProducts=qProducts.Where(s=>s.Name==txtFilter1.Text);
if (txtFilter2.Text!="") qProducts=qProducts.Where(s=>s.Field==txtFilter2.Text);
if (cboCombo1.SelectedValue!=0) qProducts=qProducts.Where(s=>s.price...

и т. Д.

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