gpt4 book ai didi

c# - 如何在 SqlKata 中将多个 WHERE 子句连接在一起?

转载 作者:行者123 更新时间:2023-12-02 00:03:32 28 4
gpt4 key购买 nike

我正在使用SqlKata创建动态 SQL 查询。我有一个条件列表,存储在我的数据库中,这些条件是根据我的业务规则生成的。这是我的代码示例:

var list = new List<Query>();
foreach(var rule in rules){
var q = new Query()
.Where(x=> x.Where("Price", "<", rule.Price).OrWhere("GoodsType", "=", rule.Type));
list.Add(q);
}

现在我想将此列表项连接在一起,但 Where() 扩展重载均不接受 Query 类型参数。有没有办法将 where 子句连接在一起?

这是我需要生成的预期查询的一小部分。

select * from ship_schedule where Path = @path and scheduleDate= @Date
AND (FD.IssueType ='O' OR fd.Path!='ILMTOP' OR (fd.Path='ILMTOP' AND F.carrier !='MAL'))
AND (FD.IssueType ='O' OR fd.Path!='TOPILM' OR (fd.Path='ILMTOP' AND F.carrier !='MAL'))

我需要创建查询的第二行到最后。

最佳答案

Where 方法是附加方法,多次调用它会向查询添加多个条件,因此您不需要自己构建条件列表。

var query = new Query("ship_schedule").Where("Path", path);

foreach(var rule in rules) {
// loop over rules and append them to the query

if(col == null) {

query.WhereNull(col);

} else {

query.Where(q =>
q.Where("Price", "<", rule.Price)
.OrWhere("GoodsType", "=", rule.Type)
)

}
}

其他方式

使用When方法

query.When(condition, q => q.Where(...));

使用WhereIf方法

query.WhereIf(condition, "Id", "=", 10);

关于c# - 如何在 SqlKata 中将多个 WHERE 子句连接在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50590851/

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