5

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

public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)

什么是 TSource 和 TKey?什么是键选择器?IOrderedEnumerable 到底是什么?

Func<> 做什么?

为什么 MSDN 如此神秘?

4

2 回答 2

11

分解

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

这个函数本质上是一个排序函数。因此,它需要一种方法来比较集合中的元素。这种特定方法假定对于给定的对象,有一个对应的键值可以对它们进行排序。

以下面的学生为例

class Student { 
  string Name { get; set; }
  ...
}

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

IEnumerable<Student> col = GetTheStudents();
var ordered = col.OrderByDescending( x => x.Name );

在这种情况下,值如下

  • 来源:Student
  • 钥匙:String
  • Func<TSource,TKey>: 这是传入的 lambda 表达式x => x.Name
于 2009-12-01T16:21:07.137 回答
3

我只是想知道,MSDN 上到底有什么不清楚的地方?这是主题:http: //msdn.microsoft.com/en-us/library/bb548916.aspx

以下是对该主题的一些问题的答案:

类型参数

TSource - 源元素的类型。

TKey - keySelector 返回的键的类型。

参数

source - 要排序的一系列值。

keySelector - 从元素中提取键的函数。

comparer - 用于比较键的 IComparer。

返回值

一个 IOrderedEnumerable,其元素根据键按降序排序。

此外,还有备注和示例。您在此处发布的内容只是该方法的签名。

于 2009-12-01T19:02:40.773 回答