Ответ 1
В С# что-то вроде:
var query = from category in mycatg
where category.IsPublic == 1
|| category.FirstName == "XXX"
group 1 by category.Catg into grouped
select new { Catg = grouped.Key,
Count = grouped.Count() };
Проекция "1" проясняет, что все, что нам нужно, это ключ группировки и счетчик - отдельные записи в каждой группе не имеют значения.
Использование лямбда-синтаксиса и точечной нотации:
var query = mycatg.Where(category => category.IsPublic == 1
|| category.FirstName == "XXX")
.GroupBy(category => category.Catg,
category => 1)
.Select(grouped => new { Catg = grouped.Key,
Count = grouped.Count() });