public static IQueryable<TResult> ApplySortFilter<T, TResult>(this IQueryable<T> query, string columnName)
where T : EntityObject
{
var param = Expression.Parameter(typeof(T), "o");
var body = Expression.PropertyOrField(param,columnName);
var sortExpression = Expression.Lambda(body, param);
return query.OrderBy(sortExpression);
}
Bởi vì kiểu cho OrderBy không suy ra từ sortExpression tôi cần phải xác định nó một cái gì đó như thế này tại thời gian chạy:Làm cách nào để áp dụng OrderBy trên IQueryable bằng cách sử dụng tên cột chuỗi trong một phương pháp mở rộng chung?
var sortExpression = Expression.Lambda<T, TSortColumn>(body, param);
Hoặc
return query.OrderBy<T, TSortColumn>(sortExpression);
Tôi không nghĩ rằng đây có thể tuy nhiên TSortColumn chỉ có thể được xác định trong thời gian chạy.
Có cách nào khác không?
Không chắc chắn nếu [this] (http://stackoverflow.com/a/12920204/1139347) những gì bạn đang tìm kiếm, nhưng hãy xem. Chúc mừng – joaopintocruz
@JTew Làm thế nào tôi có thể thực hiện một đơn đặt hàng thứ hai theo mệnh đề ... id đặt hàng sau đó theo ngày – SRJ