将 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
我启动了一个项目,该项目允许我使用 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