对数组列表进行排序

本文关键字:排序 列表 数组 | 更新日期: 2023-09-27 18:00:29

我有一系列用于对象的字符串字段。我想在一个循环中创建多个,然后根据其中一个字段对它们进行排序。这是我迄今为止拥有的

string[] EventArray = new string[3];
    EventArray[0] = "STRStartDateTime" //Sort by this field A->Z
    EventArray[1] = "StartTimeOut";
    EventArray[2] = "EndTimeOut";
List<Array> EventsUnsorted = new List<Array>();
EventsUnsorted.Add(EventArray);
//Sort Events
foreach (Array Event in EventsSorted)
{
    string Output = Event.GetValue(2).ToString();
}

我应该使用什么方法进行排序?通常情况下,我是否采取了正确的方法来存储这样的数据?

对数组列表进行排序

两个最简单的选项是:

  • EventsUnsorted.Sort()-默认情况下,List<String>使用当前区域性,不区分大小写的升序。

  • EventsUnsorted.OrderBy()-您将提供要按例如.OrderBy(x=>x.EventID) 排序的字段

使用这个简单的Linq表达式:

var EventsSorted = EventsUnsorted.OrderBy(event => event[0]);

尝试使用List<string[]>并添加订购的itens,例如:

// create the array
string[] EventArray = new string[3];
EventArray[0] = "STRStartDateTime"
EventArray[1] = "StartTimeOut";
EventArray[2] = "EndTimeOut";
// create the list
List<string[]> EventsUnsorted = new List<string[]>();
EventsUnsorted.Add(EventArray);
// sort by 0 index
EventsUnsorted = EventsUnsorted.OrderBy(x => x[0]).ToList(); 
foreach (string[] e in EventsSorted)
{
    string Output = e[2].ToString();
}

使用Array.Sort方法。

string[] EventArray = new string[3];
    EventArray[0] = "STRStartDateTime" //Sort by this field A->Z
    EventArray[1] = "StartTimeOut";
    EventArray[2] = "EndTimeOut";
Array.Sort(EventArray);