我启动了一个项目,允许我使用lambda表达式创建SQL查询。
由于某些原因,当我尝试下面的代码时,注入“转换”方法的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}
免费填写项目: https://github.com/matanshidlov/Lambda-To-Sql/tree/master/Lambda-To-Sql
答案 0 :(得分:1)
object
是参考类型。 int
是值类型。要将int
转换为object
,从而转换为引用类型,int
必须装箱。拳击涉及创建一个引用类型对象作为int
周围的包装器。这就是Convert
的作用。
请参阅:Boxing and Unboxing (C# Programming Guide)
还有:Expression.Convert Method