匿名类型的动态SortBy

时间:2017-12-05 16:54:42

标签: c# .net linq dynamic anonymous-types

如何对匿名类型列表执行SortBy操作?

我的意思是,考虑enumerable匿名类型IEnumerable作为参数。例如:

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

当然,匿名类型具有Name属性

如何实施SortBy内部?

非常感谢!

1 个答案:

答案 0 :(得分: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; }
   }
  

注意:如果您将Enum用于sortOrder参数

,那会更好