C# 如何按dateTime元素对自定义数组列表进行排序
我有一个带有类实例的ArrayList(在本例中为“loan”)。此贷款类包含一个变量“date”。我想按这些日期变量以最佳方式对ArrayList进行排序C# 如何按dateTime元素对自定义数组列表进行排序,c#,datetime,sorting,arraylist,C#,Datetime,Sorting,Arraylist,我有一个带有类实例的ArrayList(在本例中为“loan”)。此贷款类包含一个变量“date”。我想按这些日期变量以最佳方式对ArrayList进行排序 我以前进行日期排序的方法是使用列表。但在本例中,我希望对列表/数组列表进行排序,保留其余信息,以便所有信息都可以在其他地方使用您可以使用System.Linq.Enumerable扩展方法Cast和OrderBy,用于此: ArrayList list; List<Loan> loanes = ( from loan
我以前进行日期排序的方法是使用
列表
。但在本例中,我希望对列表/数组列表进行排序,保留其余信息,以便所有信息都可以在其他地方使用您可以使用System.Linq.Enumerable
扩展方法Cast
和OrderBy
,用于此:
ArrayList list;
List<Loan> loanes = (
from loan in list.Cast<Loan>()
orderby loan.Date
select loan).ToList();
ArrayList列表;
列表贷款=(
来自list.Cast()中的贷款
orderby loan.日期
选择loan.ToList();
您需要制作一个IComparer
,返回x.Date.CompareTo(y.Date)
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());
}
注意:如果您混合使用本地日期和UTC日期,它将按原始时间排序,而不进行时区转换。调用结果
sortedList
会产生误导,因为它是(有序的)可枚举列表,而不是列表。