Перейти к содержимому

Часть 78 — Сортировка списка сложных типов в C#

kudvenkat

0:00 / 0:00

Часть 78 — Сортировка списка сложных типов в C#

147 106 просмотров · 13 лет назад
kudvenkat
845 тыс. подписчиков
147 106 просмотров · 13 лет назад
Примеры кода, использованные в демонстрации: http://csharp-video-tutorials.blogspo... Здоровое питание очень важно как для тела, так и для ума. Если вам нравятся рецепты Aarvi Kitchen, пожалуйста, поддержите нас, поделившись ссылкой, подписавшись и поставив лайк нашему каналу на YouTube. Надеемся на вашу помощь. (Примечание: Aarvi Kitchen не относится к тексту, не относится к тексту, не относится к тексту, не относится к тексту, не относится к тексту, не относится к тексту, не относится к тексту, не относится к тексту, не относится к тексту, который ...    / @aarvikitchen5572   Слайды http://csharp-video-tutorials.blogspo... Ссылки на плейлисты видеоуроков по CSharp, ASP.NET, ADO.NET, основам .NET, MVC и SQL Server https://www.youtube.com/user/kudvenka... Это продолжение части 77. Пожалуйста, посмотрите часть 77, прежде чем продолжить. Для сортировки списка сложных типов без использования LINQ, сложный тип должен реализовывать интерфейс IComparable и предоставлять реализацию метода CompareTo(). Метод CompareTo() возвращает целое число, значение возвращаемого значения показано ниже. Возвращаемое значение больше нуля — текущий экземпляр больше сравниваемого объекта. Возвращаемое значение меньше нуля — текущий экземпляр меньше сравниваемого объекта. Возвращаемое значение равно нулю — текущий экземпляр равен сравниваемому объекту. В качестве альтернативы можно также вызвать метод CompareTo(). Свойство Salary объекта Customer имеет тип int. Метод CompareTo() уже реализован для целочисленного типа, поэтому мы можем вызвать этот метод и вернуть его значение, как показано ниже. return this.Salary.CompareTo(obj.Salary); public class Customer : IComparable[Customer] { public int ID { get; set; } public string Name { get; set; } public int Salary { get; set; } public int CompareTo(Customer obj) { //if (this.Salary ] obj.Salary) // return 1; //else if (this.Salary [ obj.Salary) // return -1; //else // return 0; // ИЛИ, в качестве альтернативы, вы также можете вызвать метод CompareTo(). return this.Salary.CompareTo(obj.Salary); } } Если вы предпочитаете не использовать функциональность сортировки, предоставляемую классом, вы можете предоставить свою собственную, реализовав интерфейс IComparer. Например, если я хочу, чтобы клиенты сортировались по имени, а не по зарплате. Шаг 1: Реализуйте интерфейс IComparer public class SortByName : IComparer[Customer] { public int Compare(Customer x, Customer y) { return x.Name.CompareTo(y.Name); } } Шаг 2: Передайте экземпляр класса, реализующего интерфейс IComparer, в качестве аргумента методу Sort(). SortByName sortByName = новый SortByName(); listCutomers.Sort(sortByName);