gpt4 book ai didi

c# - .NET Core 查询到 Postgres 的可选过滤器?

转载 作者:行者123 更新时间:2023-12-04 10:49:03 24 4
gpt4 key购买 nike

我正在使用最新的 .NET Core 构建 API (在 C# 中)和最新的 PostgreSQL .

一个典型的查询会从几个连接的表中返回数据。例如,job查询将返回包括薪水、地址、职位名称等数据。

我需要一种方法来包含 WHERE此查询上的子句,基于一个或多个过滤器,这些过滤器可能存在也可能不存在(例如,按职位发布日期过滤,但前提是用户选择这样做)。

一种方法是使用一堆 if 语句并手动修改查询(例如,如果传入了薪水要求,则连接 WHERE salary > 100000。这看起来很脏。

从这里的答案来看,Postgres 似乎有空合并( How to query postgres on optional params? ),例如

SELECT * from jobswhere 
($1 is null or salary = $1) and
($2 is null or jobPostDate= $2);

有没有更简洁的方法来使用 Dapper 或 Linq To SQL 来做到这一点?这样做的首选方法是什么?

最佳答案

我建议 SqlKata用于编写您的查询。它包括一个方法 When()在生成的 SQL 中包含 Where 子句之前,必须先传递一个条件。

它在引擎盖下使用 Dapper。

如果使用 linq,你可以这样做

IQueryable query = dbContext.Blogs;
if (isSo)
{
query = query.Where(...);
}
query.ToArray();

关于c# - .NET Core 查询到 Postgres 的可选过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59572789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com