我正在使用
我在这一行收到两个错误:
SQLKata
在C#
中构建一个SQL
语句,并在Github论坛上找到了一些代码,但它无法编译。我需要帮忙让它能够编译。我在这一行收到两个错误:
query.Where(q =>
编译错误(第17行,第16列):类型为'System.Func'的lambda表达式中不是所有的代码路径都返回一个值
编译错误(第17行,第16列):无法将lambda表达式转换为'type'因为它不是委托类型
class Group
{
public List<Condition> Conditions {get; set;}
}
class Condition
{
public string Field {get; set;}
public string Operator {get; set;}
public object Value {get; set;}
}
var query = new Query("Countries");
foreach(Group group in groups)
{
query.Where(q =>
{
foreach(Condition c in group.Conditions)
{
q.OrWhere(c.Field, c.Operator, c.Value);
}
});
}
.NET Fiddle在这里
Github帖子在这里
更新: 根据Alex的回答,我已经更新了示例。我正在寻找一个语句,所以期望的输出是将OR语句用括号括起来。现在它基本上已经按预期工作了,除了每个组应该在自己的括号内,像下面这样:
SELECT * FROM [Countries] WHERE ([Group1Field1] = @p0 OR [Group1Field2] > @p1 OR [Group1Field3] < @p2 OR [Group1Field4] = @p3) OR ([Group2Field1] = @p4 OR [Group2Field2] >= @p5 OR [Group2Field3] <= @p6) AND [Id] = @p7
最终更新: 解决了。提供了以上期望的输出。谢谢。
var query = new Query("Countries");
foreach (Group group in groups)
{
query.OrWhere(q => {
foreach (Condition c in group.Conditions)
{
q.OrWhere(c.Field, c.Operator, c.Value);
}
return q;
});
}
query.Where("Id", "=", 10);
Console.WriteLine(sql);
中输出什么? - CSDev