我有一个模型“水果”存储这样的数据:
date fruit_code count
2013/09/30 apple 10
2013/09/30 pear 5
2013/10/01 apple 1
2013/10/01 pear 2
2013/10/02 apple 5
Run Code Online (Sandbox Code Playgroud)
我想要的只是显示每个月每个水果的总和,输出将是这样的:
date no_of_apple no_of_pear
2013/09 10 5
2013/10 6 2
Run Code Online (Sandbox Code Playgroud)
我试图像这样构建 linq 但被卡住了:
from o in fruit
let keys = new
{
date = o.date.ToString("yyyy/MM"),
fruit = o.fruit_code
}
group o by keys into grp
select new
{
date = grp.Key.date,
no_of_apple = // I got stucked here, wondering how to
no_of_pear = // calculate the conditional sum
}
Run Code Online (Sandbox Code Playgroud)
先感谢您。
尝试这个:
var result = fruit.GroupBy(i => i.date)
.Select(i => new
{
date = i.Key,
no_of_apple = i.Where(j => j.fruit_code == "apple").Sum(k => k.count),
no_of_pear = i.Where(j => j.fruit_code == "pear").Sum(k => k.count)
});
Run Code Online (Sandbox Code Playgroud)