C#中有多种数据类型的多维数组?

时间:2009-12-10 16:15:47

标签: c# arrays multidimensional-array

我想创建一个包含整数元素和日期时间元素的多维数组。我希望能够对datetime元素进行排序,并根据排序的datetime元素获取整数元素。有没有办法用c#中的数组做这个,或者我应该使用更像数据表的东西?

4 个答案:

答案 0 :(得分:3)

对于keep interegs和DateTimes,使用通用的System.Collections。 Dictionary< DateTime,int >

要保留订单,请使用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);

答案 1 :(得分:2)

DataTable更适合您需要的操作,因为它提供了对按列和其他类似表操作进行排序的内置支持。

答案 2 :(得分:0)

您可以将KeyValuePair<DateTime, int>用作元素类型。

答案 3 :(得分: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));