为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
翻翻过去那场雪 2021-07-09 14:03:15
我正在使用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= @DateAND (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'))我需要创建查询的第二行到最后。
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

该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);


查看完整回答
反对 回复 2021-07-11
  • 1 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信