OrderByDescending () для MSDN, что это значит? - PullRequest
5 голосов
/ 01 декабря 2009

Может кто-нибудь помочь разобрать элементы здесь и помочь мне понять, чем они являются?

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

Что такое TSource и TKey? Что такое KeySelector? Какого черта IOrderedEnumerable?

Что делает Func <> делает ??

Почему MSDN такой загадочный?

Ответы [ 2 ]

11 голосов
/ 01 декабря 2009

Пробой

  • TSource: это тип элементов в коллекции, которые необходимо заказать
  • TKey: ключ типа, по которому упорядочены элементы.
  • Func<TSource,TKey>: делегат, который вернет ключ для данного элемента в коллекции

Эта функция по сути является функцией сортировки. Как таковой, он нуждается в способе сравнения элементов в коллекции. Этот конкретный метод предполагает, что для данного объекта существует соответствующее значение ключа, по которому они могут быть отсортированы.

Возьмем, к примеру, следующий класс Ученик

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

Если бы я хотел отсортировать коллекцию Student экземпляров по их имени, я мог бы сделать следующее

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

В этом случае значения будут следующими:

  • TSource: Student
  • TKey: String
  • Func<TSource,TKey>: это переданное в лямбда-выражении x => x.Name
3 голосов
/ 01 декабря 2009

Мне просто интересно, что именно неясно на MSDN? Вот тема: http://msdn.microsoft.com/en-us/library/bb548916.aspx

А вот несколько ответов на ваши вопросы из этой темы:

Параметры типа

TSource - Тип элементов источника.

TKey - Тип ключа, возвращаемого keySelector.

Параметры

source - последовательность значений для порядка.

keySelector - функция для извлечения ключа из элемента.

comparer - IComparer для сравнения ключей.

Возвращаемое значение

IOrderedEnumerable, элементы которого отсортированы по убыванию в соответствии с ключом.

Также есть замечания и пример. То, что вы разместили здесь, является лишь подписью метода.

...