Сортировка 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; }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5