Сортировка List состоящего из своего класса - C#
Формулировка задачи:
Основная задача сделать сортировку по столбца в DataGridView, данные которого хранятся в List<mFiles> (mFiles - мой класс)
mFiles элемент содержит данные для одной строки DataGridView,
данные выводятся с помощью метода
с указанием индекса нужного элемента (можно сказать столбца) Нужно сохранить структуру данных в DataGridView и list, однако обычная сортировка DataGridView вроде не хранит последовательности. Поразмыслив я решил, что стоит фильтровать сами данные в List, но не знаю как это сделать с классом. Причем данные хотелось фильтровать, как фильтрует их windows... Спрашивал тут по этому поводу, мне подсказали вот такой метод для List<string>
Листинг программы
- public class LogicalStringComparer : IComparer<string> //Сортировка
- {
- [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
- static extern int StrCmpLogicalW(string x, string y);
- public int Compare(string x, string y)
- {
- return StrCmpLogicalW(x, y);
- }
- }
- ...
- List<string> _list = new List<string>();
- _list.Sort(new LogicalStringComparer());
- ...
Решение задачи: «Сортировка List состоящего из своего класса»
textual
Листинг программы
- class Program
- {
- static void Main(string[] args)
- {
- List<Example> exL = new List<Example>()
- {
- new Example
- {
- Text = "текст",
- Val = 11,
- },
- new Example
- {
- Text = "текст",
- Val = 21,
- },
- new Example
- {
- Text = "текст",
- Val = 2,
- },
- };
- Console.WriteLine(string.Join("\n",
- exL.Select(ex => $"{ex.Text } {ex.Val}")));
- Console.WriteLine("После сортировки:\n" +
- string.Join("\n", exL.OrderBy(n => n.Val)
- .Select(ex => $"{ex.Text } {ex.Val}")));
- Console.ReadKey(false);
- }
- }
- class Example
- {
- public string Text { get; set; }
- public int Val { get; set; }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д