2017-12-05 16 views
-1

匿名タイプのリストに対して、SortBy操作を実行するにはどうすればよいですか?匿名タイプの動的SortBy

私はenumerableがパラメータとして提供されます匿名型IEnumerableであることを考えると、意味。例えば:もちろん

public IQueryable<object> MyMethod(IQueryable<object> enumerable) 
{ 
    return enumerable.SortBy("Name"); 
} 

、匿名型はNameプロパティSortBy内部を実装する必要がありますどのように

を持っていますか?

大きな感謝!

+1

匿名型は、単一の方法の範囲内で使用するために設計されているsortOrderパラメータにEnumを使用する場合、それは良いだろう。別のメソッドからこのような型を使用する場合は、匿名型を使用しないでください。名前付きの型を作成します。 – Servy

答えて

3

System.Linq.Dynamicを使用して実行できます。

public static class LinqExtensions 
{ 
    public static IQueryable<T> OrderByName<T>(this IQueryable<T> queryable, string sortOrder = null) 
    { 
     if (string.IsNullOrEmpty(sortOrder)) 
     { 
      sortOrder = "ASC"; 
     } 
     return queryable.OrderBy(string.Format("Name {0}", sortOrder)); 
    } 
} 

使用

var query = yourContext.Products.OrderByName("DESC"); 
    var productList = query.ToList(); 

    public class Product 
    { 
     public int Id { get;set; } 

     public string Name { get; set; } 
    } 

注:

+0

OK、答えをありがとう!これはIEnumerable に対して機能するはずですが、IQueryable はどうですか?たとえば、Entity Frameworkを使用してサーバーでソートを実行するなど、LINQ-To-Entitiesプロバイダーを使用してソートを実行しますか? – SuperJMN

+0

はい、私は答えを更新することができます。 – lucky

関連する問題