Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT MIN(CASE WHEN p.type = "In" THEN p.PunchTime ELSE NULL END ) AS EarliestIn,
- MAX(CASE WHEN p.type = "Out" THEN p.PunchTime ELSE NULL END ) AS LatestOUt
- FROM Punches p
- List<int> myInts = new List<int>() { 1, 4, 2, 0, 3 };
- var y = myInts.Aggregate(
- new { Min = int.MaxValue, Max = int.MinValue },
- (a, i) =>
- new
- {
- Min = (i < a.Min) ? i : a.Min,
- Max = (a.Max < i) ? i : a.Max
- });
- Console.WriteLine("{0} {1}", y.Min, y.Max);
- 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;
- }
Add Comment
Please, Sign In to add comment