2015-06-27 40 views
0

我开始了一个项目,该项目允许我使用lambda表达式创建sql查询。将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} 

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

+0

试试这个query.GroupBy(X => x.IntExample,x.StringExample) –

+0

我不能做到这一点,代码不经过编译 –

回答

1

object是一个参考类型。 int是一个值类型。为了将int转换为object,并因此转换为参考类型,int必须是盒装。拳击包括创建一个引用类型的对象作为围绕int的包装。这就是Convert所做的。

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

+0

OK,谢谢你,这解释了转换。 –

相关问题