2009-12-10 82 views
4

我想創建一個包含整數元素和日期時間元素的多維數組。我希望能夠對datetime元素進行排序,並根據排序的datetime元素獲取整數元素。有沒有辦法做到這一點在c#中的數組,或者我應該使用更像是一個數據表?在C#中有多個數據類型的多維數組?

+0

multidimentional?你想如何分類? – Grzenio 2009-12-10 16:21:34

+0

我認爲本意味着2列,DateTime和int的數組,像Dictionary serhio 2009-12-10 16:39:43

回答

3

對於保留interegs和DateTimes,請使用通用System.Collections。 字典< 日期時間,整數>

用於保持順序,使用System.Collections.Specialized。 OrderedDictionary。請參閱MSDN中的示例(here)。

// Creates and initializes a OrderedDictionary. 
OrderedDictionary myOrderedDictionary = new OrderedDictionary(); 
myOrderedDictionary.Add("testKey1", "testValue1"); 
myOrderedDictionary.Add("testKey2", "testValue2"); 
myOrderedDictionary.Add("keyToDelete", "valueToDelete"); 
myOrderedDictionary.Add("testKey3", "testValue3"); 

ICollection keyCollection = myOrderedDictionary.Keys; 
ICollection valueCollection = myOrderedDictionary.Values; 

// Display the contents using the key and value collections 
DisplayContents(keyCollection, valueCollection, myOrderedDictionary.Count); 
2

A DataTable對於您所需要的操作來說會更加合適,因爲它提供了對按列和其他類似表操作進行排序的內置支持。

0

您可以使用KeyValuePair<DateTime, int>作爲您的目的的元素類型。

0

我可能會定義一個自定義類型:

public class Entity 
{ 
    public DateTime Date { get; set; } 
    public int[] Elements { get; set; } 
} 

和使用Linq與Entity[]。以下是一個排序示例:

var entities = new[] 
{ 
    new Entity 
    { 
     Date = new DateTime(2009, 12, 10) 
    }, 
    new Entity 
    { 
     Date = new DateTime(2009, 12, 11) 
    }, 
    new Entity 
    { 
     Date = new DateTime(2009, 12, 9) 
    } 
}; 
Array.Sort(entities, (e1, e2) => e1.Date.CompareTo(e2.Date)); 
+0

我認爲這是一個合理和適當的方法。雖然'DataTable'和多維數組有時可能是合適的,它們不是有意義模型類的普通替代品。 – LBushkin 2009-12-10 17:57:46