我建立一个使用predicatebuilder得到一些结果的小的搜索类:LINQ排序:不能按类型排序“System.IComparable”
这里是我的查询:
var results = (from u in db.users
join p in db.profiles on u.userId equals p.UserID
select new SearchResult { Profile = p, User = u }).AsQueryable().Where(predicate);
结果成为枚举信息搜索结果的:
public class SearchResult
{
public user User { get; set; }
public profile Profile { get; set; }
}
也能正常工作,但现在我也想对它进行排序:
var sortedResult = results.OrderBy(x => x.User.timeAdded);
这太正常工作时,我做的只是:
Expression<Func<SearchResult, IComparable>> OrderByExpression = x => x.User.timeAdded;
var sortedResult = results.OrderBy(OrderByExpression);
我得到这个错误:无法按类型“System.IComparable”订单。
这不正是把lambda查询正确地放入orderby子句(它工作)吗?我这样做的原因是我想将order by表达式传递给另一个函数。
任何人都知道我在做什么错?谢谢!
请显示OrderByExpression的实现 – Dyppl 2010-11-13 10:40:29