Часть 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);