如何为表达式树传递默认参数?

| 假设我有以下功能
Dal.Person.GetAllByAge<T>(int iAge, Expression<Func<Person, T>> OrderBy)  
我想为表达式传递默认参数,例如OrderBy = e => e.ID 因此,如果未定义此参数,则默认值为按ID排序。 这怎么可能?     
已邀请:
这里有两个问题:
e => e.ID
对于提供的
T
可能无效 您只能在默认参数中使用常量 您可以通过以下方法解决此问题:
public Whatever GetAllByAge<T>(int age,
                               Expression<Func<Person, T>> orderBy = null)
{
    orderBy = orderBy ?? (Expression<Func<Person, T>>) 
                         (Expression<Func<Person, int>>)(e => e.Id);
    ...
}
(假设
ID
的类型为
int
) ...但是如果
T
不是
int
,转换将失败。请注意,double转换用于\“ inner \”部分,以最初告诉编译器您要将lambda表达式转换为哪个表达式树,而\“ outer \”部分则是将其强制为适当的表达式树。输入
T
。 我很想使用重载代替:
public Whatever GetAllByAge(int age)
{
    return GetAllByAge(age, e => e.ID);
}
    

要回复问题请先登录注册