Here is sample table :
Type | Item | Activity | Done |
---|---|---|---|
A | Item#1 | Act#1 | True |
A | Item#1 | Act#2 | True |
A | Item#1 | Act#3 | False |
A | Item#2 | Act#1 | True |
A | Item#2 | Act#2 | True |
B | Item#3 | Act#1 | False |
B | Item#3 | Act#2 | True |
B | Item#3 | Act#3 | False |
Output aggregation Should be :
Type | ItemsCount | ItemsDone | ItemsRemaining | ActivityCount | ActivityDone | ActivityRemain |
---|---|---|---|---|---|---|
A | 2 | 1 | 1 | 5 | 4 | 1 |
B | 1 | 0 | 1 | 3 | 1 | 2 |
Here is my Trial :
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();
I Try to count by Item as subgroup inside Type group.
Kindly correct and complete my code. appreciate your support
Try:
ItemsDone = y.GroupBy(x => x.Item).Count(g => g.All(i => i.Done)) name
or Completed
instead of Done
, not clear from your question what should be the property name
2