c# - Lambda 表达式搜索

标签 c# wpf entity-framework lambda

我想对具有可变搜索条件的产品执行与“动态 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/

相关文章:

c# - 如何在属性中存储 Linq where 条件

.net - 是否在 Entity Framework 良好实践上使用存储库抽象?

c# - ScaleTransform 部分缩放 ContextMenu

c# - 有没有办法在Asp.Net core 3.1中手动启动BackgroundService

c# - 不使用 Javascript(C# MVC3) 将搜索过滤器添加到 URL

wpf - GridView 双击

.net - 在初始化中遇到 XAML 错误时 Visual Studio 软崩溃

c# - 将项目添加到 ListView 时,MultiDataTrigger 的 EnterActions 中的 ColorAnimation 不触发

c# - 使用 Entity Framework 获取数据长度(以验证 WCF 服务上的数据长度)

c# - .NET 应用程序最简单、最可靠的 MySQL 数据提供程序是什么?