如何编写linq查询来获取结果表?

时间:2017-02-01 06:45:25

标签: asp.net-mvc entity-framework linq asp.net-mvc-4 linq-to-sql

表:

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

1 个答案:

答案 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不是唯一标识符,则会将其命名为混淆,我建议您更改该属性的名称。