我建立一個使用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