将 Lambda 表达式转换为 sql 查询

Converting Lambda expression to sql query

我启动了一个项目,该项目允许我使用 lambda 表达式创建 sql 查询。

出于某种原因,当我尝试以下代码时,使用 "Convert" 方法注入的 lambda 请帮助我理解原因以及如何避免它。

GroupBy 函数:

public QueryBuilder<T> GroupBy(params Expression<Func<T, object>>[] expression)
{
    _groupBy.AddRange(expression);
    return this;
}

用法示例:

query.GroupBy(x=>x.IntExample,x=>x.StringExample)

从最近开始:

 expression
 {System.Linq.Expressions.Expression<System.Func<Tests.Example,object>>[2]}
 [0]: {x => Convert(x.IntExample)}
 [1]: {x => x.StringExample}

填写免费fork项目: https://github.com/matanshidlov/Lambda-To-Sql/tree/master/Lambda-To-Sql

object 是引用类型。 int 是值类型。为了将 int 转换为 object,从而转换为引用类型,int 必须 装箱 。装箱涉及创建引用类型对象作为 int 的包装器。这就是 Convert 所做的。

参见:Boxing and Unboxing (C# Programming Guide)
还有:Expression.Convert Method