Решение 1: Я сильно рекомендуем вам создать модель, которая содержит свои свойства и возвращает список, что модель.
public class CostYearModel {
public int Year { get; set; }
public int Cost { get; set; }
}
метод будет, как показано ниже
public List<CostYearModel> getResult() {
var result = from ps in _context.PurchasingShipments
group ps by ps.date.Value.Year into grp
select new CostYearModel
{
Year = grp.Key,
Cost = grp.Sum(x => x.NoOfPieces * x.PricePerPiece + x.Micelleneous + x.TransportCost + x.SupplierCommission)
};
return result.ToList();
}
Решение 2: Если вы не можете и/или не хотите, чтобы создать модель для этого, плохое решение будет возвращать список объектов. И вы можете получить доступ к значениям с отражением .
public List<Object> getResult() {
var result = from ps in _context.PurchasingShipments
group ps by ps.date.Value.Year into grp
select (new
{
Year = grp.Key,
Cost = grp.Sum(x => x.NoOfPieces * x.PricePerPiece + x.Micelleneous + x.TransportCost + x.SupplierCommission)
} as Object);
return result.ToList();
}
Код для доступа к каждому имуществу (стоимость и год в вашем случае) будет выглядеть ниже.
foreach (var costYear in result)
{
var properties = costYear.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var property in properties)
{
var value = property.GetValue(costYear, null);
}
}
Вы создаете анонимный тип в инструкции 'select', таким образом,' result' будет перечислимым анонимного типа. Единственный способ вернуть это как «IEnumerable