基于匿名类型的动态 SortBy

Dynamic SortBy over anonymous type

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

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

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

当然匿名类型有一个Name属性

里面的SortBy应该怎么实现?

您可以使用 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; }
   }

Note : It would be better if you use Enum for sortOrder parameter