15

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

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; }
}

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

4

3 回答 3

40

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

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

编辑:如果你想找到最早(开始)日期的对象,你可以使用OrderByand First

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

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

于 2012-07-26T08:17:54.983 回答
4

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

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

我看到您的 date 属性可以为空,因此如果您想避免空值,请使用以下命令:

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

于 2012-07-26T08:19:18.497 回答
2

你可以用 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;

Enjoy your day :-)

于 2012-07-26T08:22:48.007 回答