Сортировка по нескольким столбцам datagridview

731
14 января 2017, 11:01

Как сделать сортировку по двум столбцам в datagridview? Источник данных - txt файл. Всего 5 столбцов из них нужно по двум сделать сортировку.

Например: А0, А450, Y56200, Y9600 и тд.

Сами данные представлены в виде строковых значений.
Понимаю, как можно по одному столбцу сделать сортировку, но по двум ума не приложу. Подскажите пожалуйста.

Answer 1

Предположим, что у вас есть модель, которая описывает структуру одной записи в файле:

    class Example
    {
        public string X { get; set; }
        public string Y { get; set; }
        public string W { get; set; }
        public string H { get; set; }
        public string A { get; set; }
    }

И файл уже прочитан и записан в коллекцию, например

IEnumerable<Example> exampleCollection

Тогда можно сортировать коллекцию, используя LINQ to Object:

  1. OrderBy - сортирует элементы последовательности в порядке возрастания
  2. OrderByDescending - сортирует элементы последовательности в порядке убывания
  3. ThenBy - выполняет дополнительное упорядочивание элементов последовательности в порядке возрастания
  4. ThenByDescending - выполняет дополнительное упорядочивание элементов последовательности в порядке убывания

В вашем случае, для сортировки по двум столбцам используем:

exampleCollection = exampleCollection.OrderBy(e => e.Y).ThenBy(e => e.A);

Внимание! Этот запрос использует отложенное выполнение.

Что делает этот код?

Этот код выполняет сортировку коллекции по возрастанию по полю Y, если поля Y равны, то выполняется дополнительная сортировка по полю A, так же по возрастанию.

READ ALSO
FileLoadException: Could not load file or assembly. Access is denied

FileLoadException: Could not load file or assembly. Access is denied

Пациент: Windws Server 2008 R2 x64 IIS 75

416
Insert into schema.table PostgreSQL c#

Insert into schema.table PostgreSQL c#

Как добавить запись в бд с указанием нужной схемы? Проблема с запросомЕсли не указывать имя схемы, то записывает в public, если указываю тогда...

381
С# DataGridView + BindingSource+DataSet

С# DataGridView + BindingSource+DataSet

Результат запроса загоняется в DataSetК DataSet привязан BindingSource

384