2009-09-08 105 views
2
我最終寫了很多代碼,看起來像 但是有不同的表達式,比如x => x.DateOfBirth等。我想做的是把它放在一個通用的擴展方法中,我可以解析我的表達式,並且布爾值isDescending to,但我不知道如何做到這一點。類似 有人能告訴我怎麼做嗎?最好有一個解釋,以便我能理解它。

回答

4

你非常接近那裏 - 你只是缺少一個類型參數:

public static IOrderedQueryable<T> OrderBy<T, TKey>(
    this IQueryable<T> source, Expression<Func<T, TKey>> func, bool isDescending) { 
    return isDescending ? source.OrderByDescending(func) : source.OrderBy(func); 
} 

因爲func參數的類型使用TKey你的代碼是不是之前的工作,而不是的一個在你的方法聲明中輸入參數。上述應該很好。