我想创建以下方法,它接受一个 lambda 表达式并按它排序数据。我似乎无法正确设置它。
会在哪里看起来像这样???是 lambda 表达式:
public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, ???)
会这样使用:
MyList.PageAndSort(List<MyEntity> data, x=>x.ChildEntity.Name)
我想创建以下方法,它接受一个 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>
orFunc<T>
取决于您是否需要返回参数。
所以:
public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, Action<T> sortBy)
whereT
被您要排序的类型替换,所以 sting 等。