c# - 如何使这个更通用

标签 c# list ienumerable

[代码]

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 并返回 IOrderedEnumerable (其中 T 当前是一部电影。自定义模型)。 是否有任何通用类型的列表、可枚举或涵盖所有列表、IEnumerable IOrderedEnumerable 等的东西?

最佳答案

是的,有。这是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/

相关文章:

c# - 如何忽略异常并继续处理 foreach 循环?

c# - SQL 服务器未显示在 Microsoft Visual Studio 2010 上

C#转换列表在linq查询中抛出异常

python - 删除列表中与另一个列表中的最大值不对应的项目

java - 列表项 = new ArrayList() : it does not work

c# - 在树结构上实现 IEnumerable

c# - 如何让多个线程处理相同的 IEnumerable 结果?

c# - 将 outlook rtfbody 添加到包含其图像的 richtextbox

java - Android列表(ArrayList、List等): addAll() vs redefining reference

C# 无法从 IEnumerable<Base> 转换为 IEnumerable<Derived>