Я создаю небольшой класс поиска, который использует predicatebuilder для получения некоторых результатов:
вот мой запрос:
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);
Результаты становятся перечисляемыми в SearchResult:
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.
Разве это не то же самое, что поместить лямбда-запрос прямо в предложение orderby (которое работает)? Причина, по которой я это делаю, заключается в том, что я хочу передать выражение orderby другой функции.
Кто-нибудь знает, что я делаю не так? Спасибо!