CSharp · Console
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
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})
.Select(x => new {
PlayerId = x.player.Id,
PlayerName = x.player.Name,
Home = x.matches.Where(m => m.Home.StartsWith("Y")).Count()
});
foreach(var match in playerMatches){
Console.WriteLine(match);
}
}
public class Player{
public long Id;
public string Name;
}
public class Match{
public long Id;
public string Name;
public long PlayerId;
public string Home;
}
}