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