如何从具有日期的对象列表中获取最小的日期?

时间:2012-07-26 08:16:19

标签: c# .net

我创建了一个代表项目的简单类:

public class EntityAuftrag
{
    public string cis_auftrag { get; set; }
    public string bezeich { get; set; }
    public DateTime? dStart { get; set; }
    public DateTime? dEnd { get; set; }
    public decimal? aufstunde { get; set; }
    public int id_auftrag { get; set; }
    public string barcolor { get; set; }
}

现在我有一份清单。我想提取最小的日期,我该怎么做?

3 个答案:

答案 0 :(得分:26)

您可以使用Enumerable.Minnull值将被忽略,除非所有值都为空):

DateTime? smallest = auftragList.Min(a => a.dStart);

修改:如果您想查找具有最早(开始)日期的对象,可以使用OrderByFirst

EntityAuftrag auft = auftragList.OrderBy(a => a.dStart).First();

如果您想要最新日期,可以改用Enumerable.OrderByDescending

答案 1 :(得分:4)

您可以使用Min()LINQ扩展方法:

collection.Min(item => item.dStart);

我看到你的日期属性可以为空,所以如果你想避免空值,请使用以下内容:

collection.Where(item=> dStart.HasValue).Min(item => item.dStart);

答案 2 :(得分:1)

你可以简单地用Linq做到这一点。鉴于您希望对象具有最早的dStart,您可以执行以下操作:

List<EntityAuftrag> list = someSourceOfItems;

EntityAuftrag firstObject = list.OrderBy( i => i.dStart ).First() as EntityAuftrag;

或者(不确定上面是否是正确的语法),你可以这样做:

List<EntityAuftrag> list = someSourceOfItems;

EntityAuftrag firstObject = (from item in list
                            orderby item.dStart
                            select item).Single() as EntityAuftrag;

享受你的一天: - )