2

我想创建以下方法,它接受一个 lambda 表达式并按它排序数据。我似乎无法正确设置它。

会在哪里看起来像这样???是 lambda 表达式:

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

会这样使用:

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

2 回答 2

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.

于 2013-04-08T10:43:04.463 回答
2

使用Action<T>orFunc<T>取决于您是否需要返回参数。

所以:

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

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

于 2013-04-08T10:31:27.083 回答