Pivot Tables: Transforming Row Data to Columns
Create pivot tables to transform row-based data into column-based summaries:
var sales = new List<Sale>
{
new Sale { Product = "Laptop", Quarter = "Q1", Amount = 1000 },
new Sale { Product = "Laptop", Quarter = "Q2", Amount = 1200 },
new Sale { Product = "Mouse", Quarter = "Q1", Amount = 200 },
new Sale { Product = "Mouse", Quarter = "Q2", Amount = 300 }
};
// Create a pivot table
var pivot = sales
.GroupBy(s => s.Product)
.Select(g => new {
Product = g.Key,
Q1 = g.Where(s => s.Quarter == "Q1")
.Sum(s => s.Amount),
Q2 = g.Where(s => s.Quarter == "Q2")
.Sum(s => s.Amount),
Total = g.Sum(s => s.Amount)
});
// Results:
// Product Q1 Q2 Total
// Laptop 1000 1200 2200
// Mouse 200 300 500