0

How do I return multiple SUMs as JSON string with ASP.NET Core API?

Model:

public class PriceSum
{
   public int sum1 {get;set;}
   public int sum2 {get;set;}
   public int sum3 {get;set;}
}

Regular T-SQL:

SELECT 
    SUM(field1) AS sum1, 
    SUM(field2) AS sum2, 
    SUM(field3) AS sum3 
FROM 
    Prices 
WHERE 
    ProdId = Id

API controller:

[HttpGet("pricesums/{id}")]
public IEnumerable<PriceSum> GetSums(int id)
{
    return _context.DbPriceSums
                   .Where(p => p.Id == id)
                   .Sum(p => p.field1).ToList();
}

My return should look like this

[
   { "sum1":1000, "sum2":2000, "sum3":3000 }
]

I'm stuck....

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Danny Web
  • 217
  • 5
  • 17
  • i found this from that thread, but how do I run this? from p in m.Items group p by 1 into g select new { SumTotal = g.Sum(x => x.Total), SumDone = g.Sum(x => x.Done) }; _context.DbPriceSums and then???? – Danny Web Mar 24 '20 at 07:54

1 Answers1

0

You can do:

[HttpGet("pricesums/{id}")]
public IEnumerable<PriceSum> GetSums(int id)
{
    return _context.DbPriceSums
                   .Where(p => p.Id == id)
                   .Select(x => new PriceSum {
                   sum1 = x.field1.Sum() ,
                   sum2 = x.field2.Sum()  ,
                   sum3 = x.field3.Sum() 
                   }).ToList();
}
  • I get Error CS1929 'int' does not contain a definition for 'Sum' and the best extension method overload 'ParallelEnumerable.Sum(ParallelQuery)' requires a receiver of type 'ParallelQuery' – Danny Web Mar 24 '20 at 19:54