如何按对象中的属性对列表进行排序

时间:2014-01-20 21:11:51

标签: c#

我有一个名为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#中执行此操作?

2 个答案:

答案 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>.Sortdate属性一起使用会有点棘手,因为它Nullable<DateTime>,而且如何订购null和非{{1}并不是很明显值。

null

答案 1 :(得分:0)

您可以使用Sort method的其中一个重载。一个只需要使用的是一个为分类标准采用lambda表达式的表达式 - 本质上是一个带有两个元素并返回比较结果的函数:

factors.Sort((x, y) => x.date.CompareTo(y.date));

在使用DateTime?时,您还需要检查当前是否存储了值。