我有桌子的字段:
ID,sales1, sales2, sales3
1 25 15 15
1 10 7 3
2 8 11 9
3 10 5 7
3 22 9 4
Run Code Online (Sandbox Code Playgroud)
我需要按ID过滤表并返回sales1 + sales2 + sales3的总和.在mysql中,这将完成
SELECT (SUM(sales1) + SUM(sales2) + SUM(sales3)) AS total
WHERE id = 1
GROUP BY id
Run Code Online (Sandbox Code Playgroud)
但我不能让这个在linq工作.有人可以帮我弄这个吗?
在LinqPad中一起划过:
void Main()
{
//since I don't have a suitable database at hand
//I'm emulating with a list
var sales = new List<Sale>()
{
new Sale() {Id = 1, Sales1 = 25, Sales2= 15, Sales3= 15},
new Sale() {Id = 1, Sales1 = 10, Sales2= 7, Sales3= 3},
new Sale() {Id = 2, Sales1 = 8, Sales2= 11, Sales3= 9},
new Sale() {Id = 3, Sales1 = 10, Sales2= 5, Sales3= 7},
new Sale() {Id = 3, Sales1 = 22, Sales2= 9, Sales3= 4},
};
var filteredSales = sales.GroupBy (s => s.Id)//Need to Group to be able to use .Sum()
//.Where (s => s.Key == 1)
.Select (s => new
{
Id = s.Key,
Sum = s.Sum (x => x.Sales1 + x.Sales2 + x.Sales3)
}).Dump(); //ignore Dump. Only available in LinqPad
}
class Sale
{
public int Id { get; set; }
public int Sales1 { get; set; }
public int Sales2 { get; set; }
public int Sales3 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
结果:
Id | Sum
1 75
2 28
3 57
Run Code Online (Sandbox Code Playgroud)
取消注释where子句以按ID过滤.亲切的问候