Вы можете создать модель представления для этого и агрегировать, введя новое свойство:
public class SomeVM
{
public int CustId { get; set; }
public int Jan { get;set; }
public int Feb { get;set; }
public int Mar { get;set; }
public int Total { get { return Jan + Feb + Mar;} }
}
и затем в своем запросе linq:
.Select(g => new SomeVM {
CustId = g.Key,
Jan = g.Where(c => c.OrderDate.Month == 1).Sum(c => c.Qty),
Feb = g.Where(c => c.OrderDate.Month == 2).Sum(c => c.Qty),
March = g.Where(c => c.OrderDate.Month == 3).Sum(c => c.Qty)
});
Вы даже можете улучшить свой linqзапрос с использованием свойства GroupBy
для Month
.
Более лучшим подходом может быть введение Enum для месяца:
public class SomeVM
{
public int CustId { get; set; }
public List<FuelQuantity> FuelQuantities { get; set; }
public int Total { get; set; }
SomeVM()
{
FuelQuantities = new List<FuelQuantity>();
}
}
, и FuelQuantity будет выглядеть следующим образом:
public class FuelQuantity
{
public FuelMonth Month { get; set; }
public int Quantity { get; set; }
}
в то время как ваш FuelMonth будет выглядеть следующим образом:
public enum FuelMonth : int
{
January = 1,
February = 2,
..........
..........
}
Ваш запрос linq также необходимо будет скорректировать, чтобы заполнить эту коллекцию, а затем заполнить итоговое значение.