2014-04-28 90 views
0

我有一系列字符串字段的对象。我想在循环中创建多个,然后根据其中一个字段进行排序。以下是我迄今为止排序数组的列表

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(); 
} 

我应该使用什么方法进行排序和一般我拣选了正确的方法,用于存储这样的数据?

+0

你想整理你的'名单'或'string []'中的项目? –

回答

1

两个最简单的选项是:

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

  • EventsUnsorted.OrderBy() - 您将提供该字段以按例如.OrderBy(x=>x.EventID)

+0

这将让我排序我的数组的特定领域? – SamW

+0

简单地说,是的,使用'OrderBy'。查看更新的示例。要用'Sort()'来使用特定的字段,你必须创建一个'IComparer(T)'并实现你自己的逻辑。 –

-1

使用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); 
1

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

var EventsSorted = EventsUnsorted.OrderBy(event => event[0]); 
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(); 
}