Dynamically Sorting with LINQ

后端 未结 9 1887
自闭症患者
自闭症患者 2020-12-16 04:57

I have a collection of CLR objects. The class definition for the object has three properties: FirstName, LastName, BirthDate.

I have a string that reflects the name

相关标签:
9条回答
  • 2020-12-16 05:52

    You will need to use reflection to get the PropertyInfo, and then use that to build an expression tree. Something like this:

    var entityType = typeof(TEntity);
    var prop = entityType.GetProperty(sortProperty);
    var param = Expression.Parameter(entityType, "x");
    var access = Expression.Lambda(Expression.MakeMemberAccess(param, prop), param);
    
    var ordered = (IOrderedQueryable<TEntity>) Queryable.OrderBy(
        myCollection, 
        (dynamic) access);
    
    0 讨论(0)
  • 2020-12-16 05:53

    you can do this with Linq

    var results = from c in myCollection
        orderby c.SortProperty
        select c;
    
    0 讨论(0)
  • 2020-12-16 05:54

    You can copy paste the method I post in that answer, and change the signature/method names: How to make the position of a LINQ Query SELECT variable

    0 讨论(0)
提交回复
热议问题