每个MSDN的OrderByDescending(),这究竟是什么意思?

Met*_*uru 5 c# linq msdn linq-to-sql

有人可以帮忙分开这里的元素,帮助我理解它们是什么吗?

public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)
Run Code Online (Sandbox Code Playgroud)

什么是TSource和TKey?什么是keySelector?什么是IOrderedEnumerable?

Func <>做什么?

为什么MSDN如此神秘?

Jar*_*Par 11

分解

  • TSource:这是集合中需要订购的元素类型
  • TKey:元素排序的类型键.
  • Func<TSource,TKey>:Delegate将返回集合中给定元素的键

该功能本质上是一种排序功能.因此,它需要一种方法来比较集合中的元素.该特定方法假定对于给定对象,存在可以对其进行排序的对应键值.

以下面的学生为例

class Student { 
  string Name { get; set; }
  ...
}
Run Code Online (Sandbox Code Playgroud)

如果我想Student按名字对实例集合进行排序,我可以执行以下操作

IEnumerable<Student> col = GetTheStudents();
var ordered = col.OrderByDescending( x => x.Name );
Run Code Online (Sandbox Code Playgroud)

在这种情况下,值如下

  • TSource: Student
  • TKEY的: String
  • Func<TSource,TKey>:这是传入的lambda表达式 x => x.Name

  • @Ryan,x被声明为lambda表达式的一部分.更加扩展的形式如下:delegate(string x){return x.Name;} (2认同)