C # упорядочение по списку объектов с использованием атрибута int объекта - PullRequest
0 голосов
/ 09 апреля 2011

Я пытаюсь отсортировать массив объектов по весу (int) каждого объекта. Код, с которым я работаю:

Node[] sortedNodes = nodeArray.OrderBy(x => x.getWeight());

Я тоже пробовал что-то вроде:

IEnumerable<Node> sortedNodes = nodeArray.OrderBy
(node => node.getWeight, IComparable<int>);

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

Edit:
Я получаю следующую ошибку:

Ошибка 1 Аргументы типа для метода «System.Linq.Enumerable.OrderBy (System.Collections.Generic.IEnumerable, System.Func) 'не может быть вывод из использования. Пытаться указание аргументов типа в явном виде. C: \ Users \ Paul \ AppData \ Local \ Temporary Проекты \ ConsoleApplication1 \ Program.cs 26 34 HuffmanCode

1 Ответ

6 голосов
/ 09 апреля 2011

Ваш код почти верен - если вы хотите упорядоченную последовательность, вы можете использовать:

IEnumerable<Node> sortedNodes = nodeArray.OrderBy(node => node.getWeight());

Перегрузка, которая принимает IComparer<int>, не требуется, поскольку существует разумный способ сравнения int по умолчанию.значения.

Или, если вы хотите создать отсортированный массив:

Node[] sortedNodes = nodeArray.OrderBy(x => x.getWeight()).ToArray();

Ваш пример не будет компилироваться, так как не существует неявного преобразования из IEnumerable<Node> в Node[], поэтому вызовдо ToArray требуется.

...