2016-12-07 66 views
-3

我有一大堆的POCO類的,可以說其中的一個看起來像下面C#拉姆達與通用T類

class Person{ 
     public string Name {get;set;} 
     public int Age {get;set;} 
} 

這裏是我的泛型類,

class Helper<T> where T:class{ 

    public Func<IQueryable<T>, IOrderedQueryable<T>> GenerateOrderByExpression(string colName) 
    { 
    return x => x.OrderByDescending(y => y.colName); 
    //colName = NAME can be here for class person, it can be the Age field or something else for some other classes 
    //how do i become generic here, how can I be able to use which ever field i pass as colName 

    } 

} 
+0

你必須使用反射並建立一個'Expression'用於'OrderByDescending'。但是,你通過這樣做解決了什麼問題?這很可能有更好的選擇。 – juharr

+1

你應該看看動態LINQ - 它只是這樣做。 –

+0

@juharr:「LINQ to Entities無法識別方法'System.Reflection.PropertyInfo GetProperty(System.String)'方法,並且此方法無法轉換爲存儲表達式。」 – ishahrier

回答