как объединить несколько, где cluses вместе в sqlkata? - PullRequest
0 голосов
/ 29 мая 2018

Я использую 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 () extensions не принимает параметры типа 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'))

Мне нужно создать вторую строкузапрос до конца.

1 Ответ

0 голосов
/ 30 мая 2018

Метод 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);
...