2016-08-19 73 views
0

我試圖創建一個Expression<Func<T, TKey>>IQueryable<T>.OrderByDescending()建設謂詞沒有價值表達

這是在FindLast我的基類,我發現LastOrDefault將無法​​正常工作,因而一個OrderByDescending.FirstOrDefault是必要的。然而,由於說,它是一個基類和排序方法是主鍵,以便它必須是tableName + "PK"

這是迄今爲止代碼:

Expression<Func<T, object>> predicate2 = null; 
string propertyName = string.Empty; 
propertyName = typeof(T).Name + "PK"; 

ParameterExpression parameter = Expression.Parameter(typeof(T), "x"); 
// x.PK 
MemberExpression property = Expression.Property(parameter, propertyName); 
ParameterExpression[] parameters = new ParameterExpression[] { parameter }; 
predicate2 = Expression.Lambda<Func<T, object>>(property, parameters); 

result = query.Where(predicate).OrderByDescending(predicate2).FirstOrDefault(); // .LastOrDefault(); 

回答

0

沒關係,我想通了.. 。需要將predicate2更改爲適當的數據類型

Expression <Func <T, Int32>> predicate2