Для сортировки массива по двум полям в C# можно использовать метод Array.Sort(), указывая пользовательский компаратор.
Предположим, у нас есть класс Person с двумя полями - Name (строка) и Age (целое число). Нам нужно отсортировать массив типа Person[] по полю Name, а затем по полю Age.
Создадим класс Person:
class Person { public string Name { get; set; } public int Age { get; set; } }
Затем создадим массив объектов Person[] и заполним его:
Person[] people = new Person[] { new Person { Name = "Alice", Age = 25 }, new Person { Name = "Bob", Age = 30 }, new Person { Name = "Alice", Age = 20 }, new Person { Name = "Charlie", Age = 35 }, new Person { Name = "Bob", Age = 25 } };
Теперь, для сортировки по двум полям, создадим пользовательский компаратор с помощью класса Comparer<T>.Create(), передавая в него лямбда-выражение, которое будет сравнивать сначала по полю Name, а затем по полю Age:
Array.Sort(people, Comparer<Person>.Create((x, y) => { int result = x.Name.CompareTo(y.Name); if (result != 0) return result; else return x.Age.CompareTo(y.Age); }));
После сортировки массив будет выглядеть следующим образом:
Alice 20 Alice 25 Bob 25 Bob 30 Charlie 35
В данном примере при сравнении объектов типа Person первоначально сравниваются по полю Name. Если они имеют одно и то же имя, тогда сравниваются по полю Age. Это гарантирует, что массив будет отсортирован сначала по полю Name, а затем по полю Age.