[代码]
private static IOrderedEnumerable<Film> OrderBy(this IEnumerable<Film> source, Func<Film, object> order, bool desc)
{
if (desc) { return source.OrderByDescending(order); }
return source.OrderBy(order);
}
[情况]
当然,linq 已经实现了 order by。我只是想更通用化它。主要只是为了学习东西,除了我可以正常排序或按相同属性降序排序之外,它并没有真正添加其他东西。
[问题]
但是我希望使其更通用。目前它只需要 IEnumerable
最佳答案
是的,有。这是IEnumerable<T>
.
类似 List<T>
的类实现IEnumerable<T>
接口(interface),因此需要 IEnumerable<T>
的方法可与大多数任何集合一起使用。
您忘记指定方法的通用参数:OrderBy<Film>
.
原文OrderBy
方法还有一个用于键类型的通用参数。您可能还想使用它来确保比较正常工作,并且它不会进行大量不必要的装箱和拆箱:
private static IOrderedEnumerable<Film> OrderBy<Film, Key>(this IEnumerable<Film> source, Func<Film, Key> order, bool desc) {
if (desc) { return source.OrderByDescending(order); }
return source.OrderBy(order);
}
关于c# - 如何使这个更通用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6562224/