我有一个名为Factor的类,它具有Id,Explain,Date,Amount等属性....我有一个这个“Factor”类的列表。
现在我想根据Factor对象的一个属性(按日期)
对列表进行排序public class Factor
{
public DateTime? date { set; get; }
public string InnovoiceId { set; get; }
public string explain { set; get; }
public Int64? bedehkar { set; get; }
public Int64? bestankar { set; get; }
public Int64? mande { set; get; }
}
List<Factor> factors=new List<Factor>();
我如何在C#中执行此操作?
答案 0 :(得分:3)
您可以使用LINQ获取包含已排序项目的新列表:
var sortedFactors = factors.OrderBy(x => x.explain).ToList();
或者您可以使用List<T>.Sort
方法对其进行排序:
factors.Sort((e1, e2) => e1.explain.CompareTo(e2.explain));
的更新强> 的
将List<T>.Sort
与date
属性一起使用会有点棘手,因为它Nullable<DateTime>
,而且如何订购null
和非{{1}并不是很明显值。
null
答案 1 :(得分:0)
您可以使用Sort
method的其中一个重载。一个只需要使用的是一个为分类标准采用lambda表达式的表达式 - 本质上是一个带有两个元素并返回比较结果的函数:
factors.Sort((x, y) => x.date.CompareTo(y.date));
在使用DateTime?
时,您还需要检查当前是否存储了值。