如何按最新(日期时间)字段对集合列表进行排序?

时间:2014-04-28 10:39:08

标签: c#

我有一个字段列表,我想按最新日期排序字段类型日期时间

foreach (var item in PList)
{                        
      SchemaPermis schemaPermis = new SchemaPermis();

      schemaPermis.PE_NUMERO = item.PE_NUMERO;
      schemaPermis.PE_REFERENCE = item.PE_REFERENCE;
      schemaPermis.PE_COUT_PREVU = item.PE_COUT_PREVU;
      schemaPermis.PE_DATE_FIN = item.PE_DATE_FIN;
      schemaPermis.PE_AUTRE_OBJET = item.PE_AUTRE_OBJET;

      PermisList.Add(schemaPermis);                     
}

我需要能够按最新(日期时间)字段对集合列表进行排序。

2 个答案:

答案 0 :(得分:3)

您要排序PList还是PermisList?但是,您可以使用LINQ的OrderByOrderByDescending

var orderedPermaList = PermisList
    .OrderByDescending(p => p.PE_DATE_FIN);

如果您需要List<SchemaPermis>使用ToList()

但是最新的是什么意思?您是否要按此日期时间字段进行降序排序,或者是否要从列表中获取最新的SchemaPermis对象?

如果您想要一个对象,请列出最新的SchemaPermis

SchemaPermis lastPerma = PermisList
    .OrderByDescending(p => p.PE_DATE_FIN)
    .First();

如果要修改原始列表而不是创建新列表(使用ToList),可以使用overload of List.Sort,需要乘以-1才能获得降序:

permaList.Sort((p1, p2) => -1 * p1.PE_DATE_FIN.CompareTo(p2.PE_DATE_FIN));

答案 1 :(得分:0)

您可以这样做:

var orderedList = PermisList.OrderBy(item => item.LatestDate);