LINQ获取查询分组结果的列

时间:2017-09-30 11:43:00

标签: c# linq

我在LINQ中获取分组列时遇到问题。

我的课程:

public class DTO_CAORAS
{    
    public int? iORAS_KEY_CON { get; set; }
    public int? iMERC_KEY {get;set;}
    public double? decD_ORAS_QUA {get;set;}        
}

LINQ查询:

var results =
    from oras in listCAORAS_Delivered
    group oras by new
    {
      oras.iORAS_KEY_CON,
      oras.iMERC_KEY
    }
    into orasGroup
    select new
    {
      decD_ORAS_QUA = orasGroup.Sum(x => x.decD_ORAS_QUA)
    };

列表results仅填充一列 - decD_ORAS_QUA。我不知道如何获取列,查询的分组为IORAS_KEY_CONiMERC_KEY?我想用iORAS_KEY_CON,iMERC_KEY和decD_ORAS_QUA填充results

输入数据:

+---------------+-----------+---------------+
| iORAC_KEY_CON | iMERC_Key | decD_ORAS_QUA |
+---------------+-----------+---------------+
|            1  |      888  |             1 |
|            1  |      888  |             2 |
|            1  |      888  |             4 |
+---------------+-----------+---------------+

期望的输出:

+---------------+-----------+---------------+
| iORAC_KEY_CON | iMERC_Key | decD_ORAS_QUA |
+---------------+-----------+---------------+
|            1  |      888  |             7 |
+---------------+-----------+---------------+

1 个答案:

答案 0 :(得分:2)

还要显示键:

var results = from oras in listCAORAS_Delivered
              group oras by new { oras.iORAS_KEY_CON, oras.iMERC_KEY } into g
              select new DTO_CAORAS {
                  iORAS_KEY_CON = g.Key.iORAS_KEY_CON,
                  iMERC_KEY = g.Key.iMERC_KEY,
                  decD_ORAS_QUA = g.Sum(x => x.decD_ORAS_QUA)
              };

由于您只对一列进行分组,您还可以:

var results = from oras in listCAORAS_Delivered
              group oras.decD_ORAS_QUA by new { oras.iORAS_KEY_CON, oras.iMERC_KEY } into g
              select new DTO_CAORAS {
                  iORAS_KEY_CON = g.Key.iORAS_KEY_CON,
                  iMERC_KEY = g.Key.iMERC_KEY,
                  decD_ORAS_QUA = g.Sum()
              };