2016-08-05 82 views
0

erhalten i min Datum aus einer SammlungMit Linq · min() Min Datum

someCollection.Min(d => d.Dates.Select(c => c.ReservationDateStart)).FirstOrDefault(); 

aber es gibt Ausnahme

Mindestens ein Objekt zu erhalten bin versucht, implementieren muss IComparable

basierend auf this ich dachte, dass Min nicht funktioniert, aber wie wir min Objekt aus Sammlung basierend auf seiner Eigenschaft Sammlung von min bekommen?

meine Sammlung ist so etwas wie diese

public class InfoDatesViewModel 
    { 
     public DateTime OccureFrom { get; set; } 
     public DateTime OccureTo { get; set; } 
     public string RecurreFrom { get; set; } 
     public string RecurreTo { get; set; } 
     public int RecurrentType { get; set; } 
     public bool IsFullDay { get; set; } 
     public int ReservedQuantity { get; set; } 
     public ReservedDateViewModel[] Dates { get; set; } 
    } 

und ReservedDateViewModel ist

public class ReservedDateViewModel 
    { 
     public bool IsAvailable { get; set; } 
     public DateTime ReservationDate { get; set; } 
     public DateTime ReservationDateEnd { get; set; } 
     public DateTime ReservationDateStart { get; set; } 
    } 
+1

Und was bedeutet 'ReservedDateViewModel' aussehen? – Corak

+0

Sie versuchen, die min 'ReservationDateStart' in einer Sammlung von' InfoDatesViewModel' zu finden oder Sie wollen nur die min in einer Instanz von 'InfoDatesViewModel' finden – sachin

+0

dank Corak sachin ... @KooKiz Antwort ist akzeptabel – Gayan

Antwort

4

Das Problem ist, dass InfoDatesViewModel.Dates eine Sammlung ist, so dass Sie es nicht direkt vergleichen.

Wenn eine Sammlung von Sammlungen haben, können Sie glätten sie mit dem SelectMany Betreiber:

someCollection.SelectMany(c => c.Dates).Min(d => d.ReservationDateStart); 
+0

great !! Vielen Dank – Gayan