簡體   English   中英

將lambda表達式作為方法參數傳遞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM