實體框架:爲了通過動態排序鍵實體框架:爲了通過動態排序鍵
我有這個疑問,它工作正常
tmpList = db.Book.OrderBy(Function(t) t.id)
但我需要根據現場訂購,像這樣的東西(sortField是一個字符串名稱的列:id,名稱,描述...)
tmpList = db.Book.OrderBy(sortField)
任何想法?
謝謝
實體框架:爲了通過動態排序鍵實體框架:爲了通過動態排序鍵
我有這個疑問,它工作正常
tmpList = db.Book.OrderBy(Function(t) t.id)
但我需要根據現場訂購,像這樣的東西(sortField是一個字符串名稱的列:id,名稱,描述...)
tmpList = db.Book.OrderBy(sortField)
任何想法?
謝謝
這裏是一個擴展方法,按屬性名稱進行排序:
public static IOrderedQueryable<TSource> OrderBy<TSource>(this IQueryable<TSource> source, string propertyName)
{
// LAMBDA: x => x.[PropertyName]
var parameter = Expression.Parameter(typeof(TSource), "x");
Expression property = Expression.Property(parameter, propertyName);
var lambda = Expression.Lambda(property, parameter);
// REFLECTION: source.OrderBy(x => x.Property)
var orderByMethod = typeof(Queryable).GetMethods().First(x => x.Name == "OrderBy" && x.GetParameters().Length == 2);
var orderByGeneric = orderByMethod.MakeGenericMethod(typeof(TSource), property.Type);
var result = orderByGeneric.Invoke(null, new object[] { source, lambda });
return (IOrderedQueryable<TSource>)result;
}
免責聲明:我的項目EntityFramework Plus的所有者。
你可以找到其他方法,通過屬性名在我的倉庫訂購: