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.Min(nullすべての値が null でない限り、値は無視されます):

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

あなたの日付プロパティはnull可能であることがわかりました.nullを避けたい場合は、次を使用してください。

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;

あなたの一日を楽しんでください:-)

于 2012-07-26T08:22:48.007 に答える