LINQ-to-Objects के साथ कई समेकन करना संभव है, लेकिन यह थोड़ा बदसूरत है।
var times = punches.Aggregate(
new { EarliestIn = default(DateTime?), LatestOut = default(DateTime?) },
(agg, p) => new {
EarliestIn = Min(
agg.EarliestIn,
p.type == "In" ? (DateTime?)p.PunchTime : default(DateTime?)),
LatestOut = Max(
agg.LatestOut,
p.type == "Out" ? (DateTime?)p.PunchTime : default(DateTime?))
}
);
तुम भी दिनांक समय के लिए न्यूनतम और अधिकतम कार्यों की जरूरत है, क्योंकि इन उपलब्ध मानक नहीं हैं।
public static DateTime? Max(DateTime? d1, DateTime? d2)
{
if (!d1.HasValue)
return d2;
if (!d2.HasValue)
return d1;
return d1.Value > d2.Value ? d1 : d2;
}
public static DateTime? Min(DateTime? d1, DateTime? d2)
{
if (!d1.HasValue)
return d2;
if (!d2.HasValue)
return d1;
return d1.Value < d2.Value ? d1 : d2;
}
धन्यवाद जॉन। लिंकक के बारे में सबसे कठिन भागों में से एक यह पता लगा रहा है कि आप क्या कर सकते हैं और नहीं कर सकते हैं। मानक पद्धति के साथ थोड़ा और अधिक आरामदायक होने के बाद मैं निश्चित रूप से आपकी पुश तकनीक पर एक नज़र डालूंगा। –