using System.Collections.Generic;
public static void Main()
List<TrafficData> trafficData = new List<TrafficData>
new TrafficData { DataID = 1, IntersectionID = 101, Timestamp = new DateTime(2023, 3, 10, 8, 0, 0), VehicleCount = 150, AverageSpeed = 40 },
new TrafficData { DataID = 2, IntersectionID = 101, Timestamp = new DateTime(2023, 3, 10, 10, 0, 0), VehicleCount = 200, AverageSpeed = 35 },
new TrafficData { DataID = 3, IntersectionID = 102, Timestamp = new DateTime(2023, 3, 10, 8, 0, 0), VehicleCount = 100, AverageSpeed = 45 },
new TrafficData { DataID = 4, IntersectionID = 102, Timestamp = new DateTime(2023, 3, 10, 17, 30, 0), VehicleCount = 180, AverageSpeed = 30 },
new TrafficData { DataID = 5, IntersectionID = 101, Timestamp = new DateTime(2023, 3, 10, 11, 0, 0), VehicleCount = 180, AverageSpeed = 25 },
var statsByIntersection = trafficData
.GroupBy(td => td.IntersectionID)
TotalVehicleCount = g.Sum(td => td.VehicleCount),
AverageSpeed = g.Average(td => td.AverageSpeed)
var busiestIntersection = statsByIntersection
.OrderByDescending(i => i.TotalVehicleCount)
Console.WriteLine($"Busiest Intersection: {busiestIntersection.IntersectionID}, Total Vehicle Count: {busiestIntersection.TotalVehicleCount}");
var peakHoursReadings = trafficData
.Where(td => td.IntersectionID == busiestIntersection.IntersectionID &&
(td.Timestamp.Hour >= 7 && td.Timestamp.Hour <= 9 || td.Timestamp.Hour >= 17 && td.Timestamp.Hour <= 19))
var nonPeakHoursReadings = trafficData
.Where(td => td.IntersectionID == busiestIntersection.IntersectionID &&
(td.Timestamp.Hour < 7 || td.Timestamp.Hour > 9) && (td.Timestamp.Hour < 17 || td.Timestamp.Hour > 19))
var peakHoursSpeed = peakHoursReadings.Any() ? peakHoursReadings.Average(td => td.AverageSpeed) : 0;
var nonPeakHoursSpeed = nonPeakHoursReadings.Any() ? nonPeakHoursReadings.Average(td => td.AverageSpeed) : 0;
Console.WriteLine(peakHoursReadings.Any()
? $"Average Speed During Peak Hours: {peakHoursSpeed} km/h"
: "No data available for peak hours.");
Console.WriteLine(nonPeakHoursReadings.Any()
? $"Average Speed During Non-Peak Hours: {nonPeakHoursSpeed} km/h"
: "No data available for non-peak hours.");
public int DataID { get; set; }
public int IntersectionID { get; set; }
public DateTime Timestamp { get; set; }
public int VehicleCount { get; set; }
public double AverageSpeed { get; set; }