Lambda 表达式搜索

发布于 2024-10-28 07:28:40 字数 318 浏览 2 评论 0原文

我想对具有可变搜索条件的产品执行相当于“动态 SQL”搜索,但使用 C# 代码。例如,产品的定义如下:

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

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

如何根据变量标准的任何此类搜索来构建通用的 lambda 表达式?

谢谢!

I want to perform the equivalent of a 'dynamic SQL' search for a product with variable search criteria, but in C# code. For example, a product is defined like this:

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

My search control has a textbox for price and a textbox for quantity. If the user specifies something, it should be included in the search (otherwise not). In reality, my product has many more than 2 properties.

How can I build a lambda expression generically based on any such search by variable criteria?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌生 2024-11-04 07:28:40

不要构建 lambda 表达式,而是一点一点地构建查询:

IQueryable<Product> productQuery = db.Products;

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

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

查询组合是 LINQ 的关键优势之一。 (不幸的是,表达式树组合 - 如果您想要单个 Where 调用,则需要执行此操作 - 相当困难。)

Rather than building a lambda expression, build up the query bit by bit:

IQueryable<Product> productQuery = db.Products;

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

Note that this won't execute the query until you start to use the results.

Query composition is one of the key strengths of LINQ. (Expression tree composition - which is what you'd need to do if you wanted a single Where call - is rather harder, unfortunately.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文