解决方案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