我必须存储大约10万项。它们每个都包含两个值(字段?)
DateTime, Decimal
我必须排序这些项目的DateTime
值以及。然而,我的尝试failed with 编译时错误:
List<DateTime, Decimal> list = ... // <- Compile time error
...
list.Sort();
如何解决存储和排序的问题?可以使用Linq吗?
首先,您不能像这样声明List<T>
List<DateTime, decimal> list // compile time error
,因为List<T>
只能有一个泛型参数(即T
)。最流行的解决方案可能是使用
Tuple<T1, T2, ...>
在你的情况下
Tuple<DateTime, decimal>
所以实现可以是
List<Tuple<DateTime, decimal>> list = new List<Tuple<DateTime, decimal>>() {
new Tuple<DateTime, decimal> (DateTime.Now, 2),
new Tuple<DateTime, decimal> (DateTime.Now, 1),
new Tuple<DateTime, decimal> (DateTime.Now, 3),
};
// Just sorting the existing list
list.Sort((Comparison<Tuple<DateTime, decimal>>)
((left, right) => left.Item1.CompareTo(right.Item1)));
// To create another (sorted) list by Linq:
List<Tuple<DateTime, decimal>> result = list
.OrderBy(item => item.Item1);