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

时间:2013-04-08 10:19:37

标签: c# lambda expression

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

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

public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, ???)

会像这样使用:

MyList.PageAndSort(List<MyEntity> data, x=>x.ChildEntity.Name)

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

使用Action<T>Func<T>,具体取决于您是否需要返回参数。

所以:

public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, Action<T> sortBy)

其中T被您要排序的类型替换,所以sting等。