[英]pass lambda expression as method parameter
我想創建以下方法,該方法接受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
。
使用Action<T>
或Func<T>
取決於您是否需要返回參數。
所以:
public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, Action<T> sortBy)
其中T
被您要排序的類型替換,所以sting等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.