表:
ID State Rate
2 NY 8
1 CA 10
1 NY 9
2 IL 7
2 WA 8
1 WA 5
Linq结果表:
ID State ApprovedR Not-ApprovedR
2 NY 8 9
1 CA 0 10
2 IL 7 0
2 WA 8 5
记录为ID=1
的评分被视为Not-ApprovedR,
如果记录没有且ID
为1,则其Not-ApprovedR
应显示为0
答案 0 :(得分:1)
首先创建一个视图模型来表示第二个表结构
public class MyViewModel
{
public int ID { get; set; }
public string State { get; set; }
public int ApprovedR { get; set; }
public int Not-ApprovedR { get; set; }
}
然后使用.GroupBy()
按State
进行分组,并将结果投影到您的视图模型中
var data = db.yourTable.GroupBy(x => x.State).Select(x => new MyViewModel()
{
ID = x.Max(y => y.ID),
State = x.Key,
ApprovedR = x.Where(y => y.ID != 1).Sum(y => y.Rate),
Not-ApprovedR = x.Where(y => y.ID == 1).Sum(y => y.Rate),
});
旁注。如果字段ID
不是唯一标识符,则会将其命名为混淆,我建议您更改该属性的名称。