我想对具有可变搜索条件的产品执行与“动态 SQL”搜索等效的操作,但使用 C# 代码。例如,产品定义如下:
class Product
{
public decimal Price { get; set; }
public int Quantity { get; set; }
}
我的搜索控件有一个价格文本框和一个数量文本框。如果用户指定了一些东西,它应该包含在搜索中(否则不包含)。实际上,我的产品具有不止 2 个属性。
我如何才能基于任何此类按变量条件进行的搜索来构建一个通用的 lambda 表达式?
谢谢!
最佳答案
与其构建 lambda 表达式,不如一点一点地构建查询:
IQueryable<Product> productQuery = db.Products;
if (userHasSpecifiedPrice)
{
productQuery = productQuery.Where(p => p.Price == userSpecifiedPrice)
}
// etc
请注意,在您开始使用结果之前,这不会执行查询。
查询组合是 LINQ 的主要优势之一。 (不幸的是,表达式树组合——如果你想要单个 Where
调用,你需要做的是相当困难的。)
关于c# - Lambda 表达式搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5489368/