【问题标题】:Lambda Expression SearchLambda 表达式搜索
【发布时间】:2011-03-30 16:45:03
【问题描述】:

我想对具有可变搜索条件的产品执行等效的“动态 SQL”搜索,但使用 C# 代码。例如,一个产品是这样定义的:

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

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

我如何一般地基于任何此类按可变条件进行的搜索来构建 lambda 表达式?

谢谢!

【问题讨论】:

标签: c# wpf entity-framework lambda


【解决方案1】:

与其构建 lambda 表达式,不如一点一点地构建查询:

IQueryable<Product> productQuery = db.Products;

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

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

查询组合是 LINQ 的主要优势之一。 (不幸的是,表达式树组合——如果你想要一个单一的Where 调用,你需要这样做——相当困难。)

【讨论】:

  • 谢谢!快速跟进:如果我需要“加入”其他数据库对象(即产品所在的仓库),这种技术是否仍然是首选?
  • @John:如果你需要有条件地加入,那就更麻烦了。如果你的加入是无条件的,那应该没问题。
猜你喜欢
  • 2011-03-27
  • 2018-11-02
  • 2015-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多