Lambda表达式搜索

时间:2011-03-30 16:45:04

标签: c# wpf entity-framework lambda

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

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

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

如何根据变量条件的任何此类搜索一般构建lambda表达式?

谢谢!

1 个答案:

答案 0 :(得分:8)

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

IQueryable<Product> productQuery = db.Products;

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

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

查询组合是LINQ的主要优势之一。 (不幸的是,表达式树组合 - 如果你想要一次Where调用,你需要做的就是这样做了。)