Поиск лямбда-выражений - PullRequest
       12

Поиск лямбда-выражений

4 голосов
/ 30 марта 2011

Я хочу выполнить эквивалент «динамического SQL» поиска продукта с переменными критериями поиска, но в коде C #.Например, продукт определяется следующим образом:

class Product
{
  public decimal Price { get; set; }
  public int Quantity { get; set; }
}

В моем элементе управления поиском есть текстовое поле для цены и текстовое поле для количества.Если пользователь указывает что-то, это должно быть включено в поиск (иначе нет).На самом деле мой продукт имеет более двух свойств.

Как я могу построить лямбда-выражение, основанное на любом таком поиске по переменным критериям?

Спасибо!

1 Ответ

8 голосов
/ 30 марта 2011

Вместо того, чтобы строить лямбда-выражение, постройте запрос по битам:

IQueryable<Product> productQuery = db.Products;

if (userHasSpecifiedPrice)
{
    productQuery = productQuery.Where(p => p.Price == userSpecifiedPrice)
}
// etc

Обратите внимание, что не выполнит запрос, пока вы не начнете использовать результаты.

Составление запроса - одна из ключевых сильных сторон LINQ. (Состав дерева выражений - это то, что вам нужно сделать, если вы хотите один Where вызов, - к сожалению, это сложнее.)

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