我想创建以下方法,该方法接受lambda表达式并通过它对数据进行排序。我似乎无法正确设置它。
看起来像这样的地方???是lambda表达式:
public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, ???)
会像这样使用:
MyList.PageAndSort(List<MyEntity> data, x=>x.ChildEntity.Name)
答案 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等。