Вы пытаетесь найти все группы Where
Any
из событий в группе, удовлетворяющих условию:
var yGroups = list.Where(g => g.Any(e => e.X == y));
EDIT
Вы пытаетесь Select
новых групп из событий в старых группах Where
какое-то условие, и вам нужны только непустые группы:
var yGroups = list.Select(g => new PublicGrouping(g.Key, g.Where(e => e.X == y))
.Where(g => g.Any());