我想創建下列方法,它接受一個lambda表達式並通過它對數據進行排序。我似乎無法正確設置它。傳遞lambda表達式作爲方法參數
會看起來像這樣?是lambda表達式:
public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, ???)
會像這樣使用:
MyList.PageAndSort(List<MyEntity> data, x=>x.ChildEntity.Name)
我想創建下列方法,它接受一個lambda表達式並通過它對數據進行排序。我似乎無法正確設置它。傳遞lambda表達式作爲方法參數
會看起來像這樣?是lambda表達式:
public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, ???)
會像這樣使用:
MyList.PageAndSort(List<MyEntity> data, x=>x.ChildEntity.Name)
LINQ有一個非常類似的方法:OrderBy
。看看它的簽名和模仿它:
public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector
)
適用於您的情況:
public static MyList<TSource> PageAndSort<TSource, TKey>(
this IEnumerable<TSource> data,
Func<TSource, TKey> keySelector
)
Func<T, TResult>
是T
類型的一個參數,它返回一個TResult
的委託。
謝謝!奇蹟般有效 – 2013-04-08 13:26:39
使用Action<T>
或Func<T>
取決於如果您需要返回PARAM與否。
所以:
public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, Action<T> sortBy)
其中T
是要排序的類型更換,所以刺等
哎呀,它不會讓我補充行動
'Func
的標籤說,C#..所以我們可以假設:P – 2013-04-08 10:32:02