排序并存储包含两个值的列表



我必须存储大约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);

相关内容

  • 没有找到相关文章

最新更新