我想创建下列方法,它接受一个lambda表达式并通过它对数据进行排序。我似乎无法正确设置它。传递lambda表达式作为方法参数
会看起来像这样?是lambda表达式:
public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, ???)
会像这样使用:
MyList.PageAndSort(List<MyEntity> data, x=>x.ChildEntity.Name)
我想创建下列方法,它接受一个lambda表达式并通过它对数据进行排序。我似乎无法正确设置它。传递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
的委托。
谢谢!奇迹般有效 – 2013-04-08 13:26:39
使用Action<T>
或Func<T>
取决于如果您需要返回PARAM与否。
所以:
public static MyList<T> PageAndSort<T>(this IEnumerable<T> data, Action<T> sortBy)
其中T
是要排序的类型更换,所以刺等
哎呀,它不会让我补充行动
'Func
的标签说,C#..所以我们可以假设:P – 2013-04-08 10:32:02