Time-Based Grouping: Analyzing Time Series Data
Group and analyze data based on time periods:
var transactions = new List<Transaction> { new Transaction { Date = DateTime.Parse("2024-01-01"), Amount = 100 }, new Transaction { Date = DateTime.Parse("2024-01-15"), Amount = 200 }, new Transaction { Date = DateTime.Parse("2024-02-01"), Amount = 150 } }; var monthlyAnalysis = transactions .GroupBy(t => new { Year = t.Date.Year, Month = t.Date.Month }) .Select(g => new { Period = new DateTime(g.Key.Year, g.Key.Month, 1), TransactionCount = g.Count(), TotalAmount = g.Sum(t => t.Amount), AverageAmount = g.Average(t => t.Amount), DailyTransactions = g .GroupBy(t => t.Date.Date) .Select(d => new { Date = d.Key, Amount = d.Sum(t => t.Amount) }) }); // Results: // January 2024: 2 transactions, Total: 300, Average: 150 // February 2024: 1 transaction, Total: 150, Average: 150