【问题标题】:How do I sort a custom array list by the dateTime elements如何按 dateTime 元素对自定义数组列表进行排序
【发布时间】:2011-05-18 13:57:39
【问题描述】:

我有一个带有类实例的 ArrayList(在本例中为“贷款”)。这个贷款类包含一个变量“日期”。我想以最优化的方式按这些日期变量对我的 ArrayList 进行排序。

我之前进行日期排序的方式是使用List<DateTime>。但在这种情况下,我想对列表/数组列表进行排序,保留其余信息,以便所有信息都可以在其他地方使用

【问题讨论】:

  • 注意:如果您混合使用本地日期和 UTC 日期,它将按原始时间排序,而不是进行时区转换。

标签: c# datetime sorting arraylist


【解决方案1】:

您可以为此使用System.Linq.Enumerable 扩展方法Cast<T>OrderBy

ArrayList list;

List<Loan> loanes = (
    from loan in list.Cast<Loan>()
    orderby loan.Date
    select loan).ToList();

【讨论】:

  • 调用结果 sortedList 具有误导性,因为它是(有序)可枚举而不是列表。
【解决方案2】:

您需要创建一个返回x.Date.CompareTo(y.Date)IComparer&lt;Loan&gt;

【讨论】:

    【解决方案3】:

    Slaks 所说的基本上是在 ArrayList 中进行排序,你需要一个自定义的 IComparer 实现,我在下面放了一个示例:

    public class Loan
    {
        public DateTime date { get; set; }
    
    }
    
    public class LoanComparer : IComparer
    {
        public int Compare(object x, object y)
        {
            Loan loanX = x as Loan;
            Loan loanY = y as Loan;
    
            return loanX.date.CompareTo(loanY.date);
        }
    }
    
    
    static void Main(string[] args)
    {
        Loan l1 = new Loan() {date = DateTime.Now};
        Loan l2 = new Loan() { date = DateTime.Now.AddDays(-5) };
    
        ArrayList loans = new ArrayList();
        loans.Add(l1);
        loans.Add(l2);
    
    
        loans.Sort(new LoanComparer());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2019-05-28
      • 2015-06-16
      • 2019-05-26
      • 2011-03-08
      • 1970-01-01
      相关资源
      最近更新 更多