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

我正在使用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'))

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


翻翻过去那场雪
浏览 152回答 1
1回答

芜湖不芜

该Where方法是可加的,多次调用会为查询添加多个条件,因此您无需自行构建条件列表。var query = new Query("ship_schedule").Where("Path", path);foreach(var rule in rules) {&nbsp; // loop over rules and append them to the query&nbsp; if(col == null) {&nbsp; &nbsp; query.WhereNull(col);&nbsp; } else {&nbsp; &nbsp; query.Where(q =>&nbsp;&nbsp; &nbsp; &nbsp; q.Where("Price", "<", rule.Price)&nbsp; &nbsp; &nbsp; &nbsp; .OrWhere("GoodsType", "=", rule.Type)&nbsp; &nbsp; )&nbsp; }}其他方法使用When方法query.When(condition, q => q.Where(...));使用WhereIf方法query.WhereIf(condition, "Id", "=", 10);
打开App,查看更多内容
随时随地看视频慕课网APP