How can I employ Linq to select Top value from each group
when I have a code segment like :
var teams = new Team[]
{
new Team{PlayerName="Ricky",TeamName="Australia", PlayerScore=234},
new Team{PlayerName="Hussy",TeamName="Australia", PlayerScore=134},
new Team{PlayerName="Clark",TeamName="Australia", PlayerScore=334},
new Team{PlayerName="Sankakara",TeamName="SriLanka", PlayerScore=34},
new Team{PlayerName="Udana",TeamName="SriLanka", PlayerScore=56},
new Team{PlayerName="Jayasurya",TeamName="SriLanka", PlayerScore=433},
new Team{PlayerName="Flintop",TeamName="England", PlayerScore=111},
new Team{PlayerName="Hamirson",TeamName="England", PlayerScore=13},
new Team{PlayerName="Colingwood",TeamName="England", PlayerScore=421}
};
Desired Result :
Team Name Player Name Score Srilanka Jayasurya 433 England colingwood 421 Australia Clark 334
My answer is similar to Yuriy’s, but using
MaxByfrom MoreLINQ, which doesn’t require the comparison to be done by ints:Note that I’ve changed the type name from “Team” to “Player” as I believe it makes more sense – you don’t start off with a collection of teams, you start off with a collection of players.