简体   繁体   English

LINQ 获取结果中的列,查询的分组依据

[英]LINQ get columns in result by which query was grouped by

I have a problem with getting grouped columns in LINQ.我在 LINQ 中获取分组列时遇到问题。

My class:我的课:

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 query: 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)
    };

List results is filled only with one column - decD_ORAS_QUA .列表results仅填充一列 - decD_ORAS_QUA I don't know how to get columns, by which query is grouped - IORAS_KEY_CON and iMERC_KEY ?我不知道如何获取列,按哪个查询分组 - IORAS_KEY_CONiMERC_KEY I would like to fill results with iORAS_KEY_CON, iMERC_KEY and decD_ORAS_QUA.我想用 iORAS_KEY_CON、iMERC_KEY 和 decD_ORAS_QUA 填充results

Input data:输入数据:

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

Desired output:期望的输出:

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

To also show the keys:还要显示密钥:

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)
              };

As you are only grouping one column you can also:由于您只对一列进行分组,因此您还可以:

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()
              };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM