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