0

我有一个MyObject包含CreationDate As Date属性的类。

获得排序依据的最佳方法是CreationDate List(Of MyObject)什么?

更快的方式和最高效的方式。

4

3 回答 3

4

使用 LINQ,您可以使用:

Dim sorted = unsorted.OrderBy(Function(x) x.CreationDate) _
                     .ToList()

编辑:如果您已经有了一个List(Of T),您可以将就地Sort方法与自定义比较器一起使用。那可能会更快。它可能不会。我怀疑这不太可能在性能上有显着差异,这是您应该关注的。

根据经验,我建议:

  • 找出什么是“足够”的表现
  • 以最易读的方式编写代码(可能是 LINQ 而不是自定义比较器,IMO)
  • 测量该代码
  • 如果速度不够快,请尝试另一种方法,并对其进行测量。将性能差异与可读性/可维护性差异进行比较。
于 2012-09-20T18:35:06.940 回答
3

列表有一个排序方法。它的一个重载允许指定一个比较

unsorted.Sort(Function(x, y) x.CreationDate.CompareTo(y.CreationDate))
于 2012-09-20T18:44:52.657 回答
0

您可以实现该IComparer接口并定义它的Compare方法来检查您的MyObject对象的日期:

public class MyObjectComparer<T> : IComparer<T>
{
    public int Compare(MyObject firstObject, MyObject secondObject)
    {
        return firstObject.CreationDate.Compare(secondObject.CreationDate);
    }
}

注意:我假设您CreationDate是类型DateTime,但您可以根据需要实现比较功能。

然后根据您的比较器对您的列表进行排序:

myListObject.Sort(new MyObjectComparer<MyObject>());
于 2012-09-20T18:42:07.973 回答