将lambda表达式作为方法参数传递

new*_*_86 2 c# lambda expression

我想创建以下方法,该方法接受lambda表达式并通过它对数据进行排序.我似乎无法正确设置它.

看起来像这样的地方??? 是lambda表达式:

public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, ???)
Run Code Online (Sandbox Code Playgroud)

会像这样使用:

MyList.PageAndSort(List<MyEntity> data, x=>x.ChildEntity.Name)
Run Code Online (Sandbox Code Playgroud)

Cod*_*aos 6

LINQ有一个非常类似的方法:OrderBy.看看它的签名并模仿它:

public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)
Run Code Online (Sandbox Code Playgroud)

适用于您的案例:

public static MyList<TSource> PageAndSort<TSource, TKey>(
    this IEnumerable<TSource> data,
    Func<TSource, TKey> keySelector
)
Run Code Online (Sandbox Code Playgroud)

Func<T, TResult>是一个委托,其中一个类型的参数T返回一个TResult.