2016-03-03 4 views
0

Entity рамки: упорядочить по и динамический ключ сортировкиEntity рамки: упорядочить по и динамический ключ сортировки

У меня есть этот запрос, и она отлично работает

tmpList = db.Book.OrderBy(Function(t) t.id) 

Но мне нужно сделать заказ в зависимости от поля, что-то вроде этого (sortField является строка с именем столбца: идентификатор, имя, описание ...)

tmpList = db.Book.OrderBy(sortField) 

Любые идеи?

Thanks

ответ

0

Вот методы расширения для сортировки по имени свойства:

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.

Вы можете найти другие методы, чтобы упорядочить по имени свойства в моем хранилище:

  • OrderByDescending
  • ThenBy
  • ThenByDescending
  • AddOrAppendOrderBy
  • AddOrAppendOrderByDescending

 Смежные вопросы

  • Нет связанных вопросов^_^