Linq 聚合子组

问题描述 投票:0回答:1

这是示例表:

类型 项目 活动 完成
A 项目#1 行动#1 正确
A 项目#1 行动#2 正确
A 项目#1 行动#3 错误
A 项目#2 行动#1 正确
A 项目#2 行动#2 正确
B 项目#3 行动#1 错误
B 项目#3 行动#2 正确
B 项目#3 行动#3 错误

输出聚合应该是:

类型 物品计数 项目完成 剩余物品 活动计数 活动完成 活动保持
A 2 1 1 5 4 1
B 1 0 1 3 1 2

这是我的试用版:

var _result = _itemModel.GroupBy(x => new { x.Type})
                        .Select(y => new
                         {
                           ItemsCount = y.Select(x => x.Item).Distinct().Count(),
                           ItemsDone= ????,
                           ItemsRemaining=????,
                           ActivityCount= y.Count(x => x.Type != null),
                           ActivityDone = y.Count(x => x.Completed == true),
                           ActivityReamin = y.Count(x => x.Completed == false)
                                     }).ToList();

我尝试按项目作为类型组内的子组进行计数。 请更正并完成我的代码。感谢您的支持

c# linq
1个回答
0
投票

尝试:

ItemsDone = y.GroupBy(x => x.Item).Where(g => g.All(i => i.Done)).Count()
© www.soinside.com 2019 - 2024. All rights reserved.