First, I would choose the names and status of the team:
var teams = models.Select(x => x.TeamName).Distinct().ToList(); var status = models.Select(x => x.CurrentStatus).Distinct().ToList();
You can skip this if you already know the list entries.
Then you can choose for each team and each state the number of models:
var teamStatusCounts = teams.SelectMany(team => states.Select(state => new { TeamName = team, CurrentStatus = state, Count = models.Count(model => model.TeamName == team && model.CurrentStatus == state) }));
source share