【发布时间】:2014-04-07 22:11:07
【问题描述】:
所以我有一个方法
public IPagedList<MyObject> GetAll<T>(Expression<Func<MyObject, T>>? orderBy,
int pageNumber = 1, int pageSize = 10)
{
return dataContext.MyObjects
.OrderBy(orderBy.HasValue ? orderBy.Value : <WHAT GOES HERE?>)
.ToPagedList<MyObject>(pageNumber, pageSize);
}
我的目标是让orderBy 参数可选,如果orderBy 是null,则默认顺序为属性MyObject.Id。
我尝试过.OrderBy(orderBy.Hasvalue ? orderBy.Value : x => x.Id),但收到此错误:
Type of conditional expression cannot be determined because there is no implicit conversion between 'System.Func<MyObject, T>' and 'lambda expression'
我做错了什么?
谢谢!
【问题讨论】:
-
这个编译是否带有问号?
Expression<Func<MyObject, T>>? -
Expression<>是一个引用类型。不能做成Nullable<>,Nullable<>只适用于值类型。 -
@KirkWoll 我知道,这就是我要问的原因。它应该在转换之前给出那个错误
-
啊!我知道我哪里出错了
标签: c# lambda expression