Lambda表达式搜索

Joh*_*ohn 4 c# wpf lambda entity-framework

我想对具有可变搜索条件但在C#代码中的产品执行"动态SQL"搜索.例如,产品定义如下:

class Product
{
  public decimal Price { get; set; }
  public int Quantity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的搜索控件有一个价格文本框和一个数量文本框.如果用户指定了某些内容,则应将其包含在搜索中(否则不包括在内).实际上,我的产品有超过2个属性.

如何通过变量条件基于任何此类搜索来一般地构建lambda表达式?

谢谢!

Jon*_*eet 8

而不是构建lambda表达式,逐位构建查询:

IQueryable<Product> productQuery = db.Products;

if (userHasSpecifiedPrice)
{
    productQuery = productQuery.Where(p => p.Price == userSpecifiedPrice)
}
// etc
Run Code Online (Sandbox Code Playgroud)

请注意,在您开始使用结果之前,这不会执行查询.

查询组合是LINQ的关键优势之一.(Where不幸的是,表达式树构成 - 如果你想要一次调用就需要做的事情- 相当困难.)