gpt4 book ai didi

c# - 数组排序列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:07 25 4
gpt4 key购买 nike

我有一个 <string[]> 的列表.
添加的项目看起来像这样

list.Add(new string[]{"1", "A", "333", "666", "16.02.2013 03:00"});
list.Add(new string[]{"2a", "A", "333", "666", "16.02.2013 03:00"});
list.Add(new string[]{"2", "A", "333", "666", "16.02.2013 03:00"});
list.Add(new string[]{"3a", "A", "333", "666", "16.02.2013 03:00"});
list.Add(new string[]{"3b", "A", "333", "666", "16.02.2013 03:00"});
list.Add(new string[]{"4", "A", "333", "666", "16.02.2013 03:00"});
list.Add(new string[]{"5", "A", "333", "666", "16.02.2013 03:00"});
list.Add(new string[]{"10", "A", "333", "666", "16.02.2013 03:00"});
list.Add(new string[]{"11", "A", "333", "666", "16.02.2013 03:00"});

从文件中解析数据并将它们添加到列表后,我必须在 DataGridView 中显示所有数据,在将所有数据添加到 DataGridView 后,我想让用户能够通过单击列标题对其进行排序。

问题是,如果用户想要按第一列对行进行排序,它将像这样排序

1   A   333 666 16.02.2013 03:00
10 A 333 666 16.02.2013 03:00
11 A 333 666 16.02.2013 03:00
2 A 333 666 16.02.2013 03:00
2a A 333 666 16.02.2013 03:00
3a A 333 666 16.02.2013 03:00
3b A 333 666 16.02.2013 03:00
4 A 333 666 16.02.2013 03:00
5 A 333 666 16.02.2013 03:00

但正确的方法是这样的:

1   A   333 666 16.02.2013 03:00
2 A 333 666 16.02.2013 03:00
2a A 333 666 16.02.2013 03:00
3a A 333 666 16.02.2013 03:00
3b A 333 666 16.02.2013 03:00
4 A 333 666 16.02.2013 03:00
5 A 333 666 16.02.2013 03:00
10 A 333 666 16.02.2013 03:00
11 A 333 666 16.02.2013 03:00

如何使用自然排序按数组的特定索引对字符串数组列表进行排序?
我不能使用 LINQ

最佳答案

您正在寻找 natural sort .有many implementations around网络;我只会选择其中一个并将其复制到您的项目中。

现在,由于您想要在 DataGridView 中排序,因此您需要附加到 SortCompare事件并在那里进行自定义排序。它看起来像这样:

private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
// Since you want a natural sort in the first column
if (e.Column.Index == 0)
{
// Create an instance of your natural sort comparer here
IComparer<string> comparer = new YourNaturalComparer()

// Perform the sort
e.SortResult = comparer.Compare(
e.CellValue1.ToString(), e.CellValue2.ToString());

// Signal that we handled the sorting for this column
e.Handled = true;
}
}

关于c# - 数组排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14923680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com