Функция Count
только:
Возвращает количество элементов в последовательности.
То, что вы хотите сделать, это подсчитать количество элементов в последовательность, которая соответствует определенному условию. Для этого используйте переопределение и принимает предикат :
.Select(g => new AppVersionModel {
DateYYMMDD = g.Key,
Android043 = g.Count(i => i.Android043 == 1),
Android044 = g.Count(i => i.Android044 == 1),
// ....
})
Поскольку вы убедились, что свойства имеют значения 0,1, вы также можете просто использовать Sum
:
.Select(g => new AppVersionModel {
DateYYMMDD = g.Key,
Android043 = g.Sum(i => i.Android043),
Android044 = g.Sum(i => i.Android044),
// ....
})
Однако я бы go применил иной подход, чтобы свойства хранили булевы значения, как показано ниже. Кроме того, не нужно писать x.BOOLEAN_PROPERTY == true
, просто напишите x.BOOLEAN_PROPERTY
.
.Select(x => new AppVersionModel {
DateYYMMDD = x.DateYYMMDD,
Android043 = x.IsAndroid && x.AppVersion == "0.4.3",
Android044 = x.IsAndroid && x.AppVersion == "0.4.4",
Android050 = x.IsAndroid && x.AppVersion == "0.5.0",
IOS043 = x.IsIos && x.AppVersion == "0.4.3",
IOS044 = x.IsIos && x.AppVersion == "0.4.4",
IOS050 = x.IsIos && x.AppVersion == "0.5.0",
})
.GroupBy(x => x.DateYYMMDD)
.OrderBy(g => g.Key)
.Select(g => new AppVersionModel {
DateYYMMDD = g.Key,
Android043 = g.Count(i => i.Android043),
Android044 = g.Count(i => i.Android44),
// ...
})