Попробуйте это:
var Locations = Data.GroupBy(l => l.Location);
.SelectMany( g =>
new
{
LocationName = g.Key,
Amounts = g
});
Func<Location, bool> matchMonth11 = l => l.Date == "11.03.2011";
Func<Location, bool> matchMonth12 = l => l.Date == "12.03.2011";
Func<Location, bool> matchMonth13 = l => l.Date == "13.03.2011";
var PivotedLocations = new List<PivotedLocation>();
foreach(var item in Locations )
{
PivotedLocations.Add( new PivotedLocation
{
LocationName = item.LocationName,
month11Amount = item.Amounts.Where(matchMonth11)
.FirstOrDefault().Amount,
month12Amount = item.Amounts.Where(matchMonth12)
.FirstOrDefault().Amount,
month13Amount = item.Amounts.Where(matchMonth13)
.FirstOrDefault().Amount
});
}
Сначала вы должны определить следующий класс:
public class PivotedLocation
{
public string LocationName { get; set; }
public int month11Amount { get; set; }
public int month12Amount { get; set; }
public int month13Amount { get; set; }
}
Затем список PivotedLocations
должен содержать данные в сводной форме, например, как вам нужно..