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