首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Linq/Lambda对非分组字段进行分组

使用Linq/Lambda对非分组字段进行分组
EN

Stack Overflow用户
提问于 2015-10-08 21:47:19
回答 1查看 47关注 0票数 1

我有一个有数据的列表

代码语言:javascript
复制
list1 [{actId: 1, dt:'10/5/2015', hr:3}, {actId: 1, dt:'10/5/2015', hr:5},
        {actId: 3, dt:'10/4/2015', hr:3}, {actId: 4, dt:'10/6/2015', hr:1},
        {actId: 4, dt:'10/6/2015', hr:8}, {actId: 1, dt:'10/2/2015', hr:3}]

我使用Linq查询对数据进行分组。

代码语言:javascript
复制
 var dat= list1.AsEnumerable().GroupBy(t=> new{t.actId, t.dt})
     .Select(x=> new 
            {
               tId=x.Key.techId,
               dat=x.Key.dt,
               thrs=x.Sum(y=>y.hr)
            });

这可以给我结果,但给我的结果分组"actId“和"dt”,而我只想按"actId“分组。如果我将查询更改为

代码语言:javascript
复制
     var dat= list1.AsEnumerable().GroupBy(t=> new{t.actId})
     .Select(x=> new 
            {
               tId=x.Key.techId,
               dat=x.dt,
               thrs=x.Sum(y=>y.hr)
            });

我得到了x.dt的智能感知错误:“解析符号”dt

请让我知道如何更改查询,这样我就可以在查询中包含x.dt,而不必按它分组。所以输出应该看起来像

代码语言:javascript
复制
 [ {actId:1, [{dt: 10/5/2015, hr:8}, {dt: 10/2/2015, hr:38}]},
  {actId: 3, [{dt: 10/4/2015, hr:3}]},
   {actId: 4 [{dt: 10/6/2015 hr: 9}]}]

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-08 21:57:00

这是因为没有一个'dt',有一个‘dt’组,这将把它们作为一个组返回给您:

代码语言:javascript
复制
var dat=list1.AsEnumerable()
     .GroupBy(t=> t.actId)
     .Select(x=> new 
            {
               actId=x.Key,
               dat=x.Select(x=>new { x.dt,x.hr}).ToList()
            });

这是我能得到你的输出的最接近的地方。看起来就像:

代码语言:javascript
复制
 [ {actId:1, dat:[{dt: 10/5/2015, hr:8}, {dt: 10/2/2015, hr:38}]},
  {actId: 3, dat:[{dt: 10/4/2015, hr:3}]},
   {actId: 4, dat:[{dt: 10/6/2015 hr: 9}]}]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33026502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档