using System.Collections.Generic;
public static void Main()
var players = new List<Player>{
new Player{Id = 1, Name = "Player1"},
new Player{Id = 2, Name = "Player2"},
new Player{Id = 3, Name = "Player3"},
new Player{Id = 4, Name = "Player4"},
new Player{Id = 8, Name = "Player8"},
new Player{Id = 11, Name = "Player11"}
var matches = new List<Match>{
new Match{Id = 10, Name = "Match10", PlayerId = 1, Home = "Y"},
new Match{Id = 11, Name = "Match11", PlayerId = 1, Home = "Y"},
new Match{Id = 12, Name = "Match12", PlayerId = 1, Home = "N"},
new Match{Id = 13, Name = "Match13", PlayerId = 1, Home = "N"},
new Match{Id = 14, Name = "Match14", PlayerId = 2, Home = "N"},
new Match{Id = 15, Name = "Match15", PlayerId = 3, Home = "N"},
new Match{Id = 16, Name = "Match16", PlayerId = 4, Home = "Y"},
new Match{Id = 17, Name = "Match17", PlayerId = 4, Home = "N"},
new Match{Id = 19, Name = "Match18", PlayerId = 11, Home = "Y"},
new Match{Id = 18, Name = "Match19", PlayerId = 11, Home = "N"},
new Match{Id = 20, Name = "Match20", PlayerId = 11, Home = "N"},
new Match{Id = 21, Name = "Match21", PlayerId = 1, Home = "N"},
new Match{Id = 22, Name = "Match22", PlayerId = 1, Home = "Y"},
new Match{Id = 23, Name = "Match23", PlayerId = 8, Home = "N"},
new Match{Id = 24, Name = "Match24", PlayerId = 1, Home = "Y"},
var playerMatches = players
.GroupJoin(matches, p => p.Id, m => m.PlayerId, (p, m) => new {player = p, matches = m})
PlayerName = x.player.Name,
Home = x.matches.Where(m => m.Home.StartsWith("Y")).Count()
foreach(var match in playerMatches){
Console.WriteLine(match);