using System;
using System.Collections .Generic ;
using System.Linq ;
namespace TestApp
{
class Program
{
public class Player
{
public string Position { get; set; }
public string Name { get; set; }
public int Salary { get; set; }
public int Age { get; set; }
}
static void Main( string[ ] args)
{
List< Player> players = new List< Player> ( )
{
new Player( ) { Name = "Peyton Manning" , Age = 36 , Position = "QB" , Salary = 19000000 } ,
new Player( ) { Name = "Tom Brady" , Age = 35 , Position = "QB" , Salary = 18400000 } ,
new Player( ) { Name = "Drew Brees" , Age = 34 , Position = "QB" , Salary = 21000000 } ,
new Player( ) { Name = "Randy Moss" , Age = 35 , Position = "WR" , Salary = 7000000 } ,
new Player( ) { Name = "Marvin Harrison" , Age = 38 , Position = "WR" , Salary = 11000000 } ,
new Player( ) { Name = "Demaryius Thomas" , Age = 23 , Position = "WR" , Salary = 5000000 } ,
new Player( ) { Name = "Ryan Clady" , Age = 26 , Position = "OT" , Salary = 10000000 } ,
} ;
var highestPaidPlayers = from pl in players
group pl by pl.Position
into g
let max = g.Max ( x => x.Salary )
let maxPl = g.Where ( x => x.Salary == max) .First ( )
select maxPl;
var highestPaidPlayers2 =
players.GroupBy ( p => p.Position ) .Select ( x => x.Where ( p => p.Salary == x.Max ( m => m.Salary ) ) .First ( ) ) ;
foreach ( Player player in highestPaidPlayers)
{
Console.WriteLine ( "The highest paid {0} is {1}, who is being paid {2}" , player.Position , player.Name , player.Salary ) ;
}
System.Console .WriteLine ( "-----------" ) ;
foreach ( Player player in highestPaidPlayers2)
{
Console.WriteLine ( "The highest paid {0} is {1}, who is being paid {2}" , player.Position , player.Name , player.Salary ) ;
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpuYW1lc3BhY2UgVGVzdEFwcAp7CgogICAgY2xhc3MgUHJvZ3JhbQogICAgewoKICAgICAgICBwdWJsaWMgY2xhc3MgUGxheWVyCiAgICAgICAgewogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIFBvc2l0aW9uIHsgZ2V0OyBzZXQ7IH0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBzZXQ7IH0KICAgICAgICAgICAgcHVibGljIGludCBTYWxhcnkgeyBnZXQ7IHNldDsgfQogICAgICAgICAgICBwdWJsaWMgaW50IEFnZSB7IGdldDsgc2V0OyB9CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewoKICAgICAgICAgICAgTGlzdDxQbGF5ZXI+IHBsYXllcnMgPSBuZXcgTGlzdDxQbGF5ZXI+KCkgCnsgCiAgICAgbmV3IFBsYXllcigpIHsgTmFtZSA9ICJQZXl0b24gTWFubmluZyIsIEFnZSA9IDM2LCBQb3NpdGlvbiA9ICJRQiIsIFNhbGFyeSA9IDE5MDAwMDAwIH0sCiAgICAgbmV3IFBsYXllcigpIHsgTmFtZSA9ICJUb20gQnJhZHkiLCBBZ2UgPSAzNSwgUG9zaXRpb24gPSAiUUIiLCBTYWxhcnkgPSAxODQwMDAwMCB9LAogICAgIG5ldyBQbGF5ZXIoKSB7IE5hbWUgPSAiRHJldyBCcmVlcyIsIEFnZSA9IDM0LCBQb3NpdGlvbiA9ICJRQiIsIFNhbGFyeSA9IDIxMDAwMDAwIH0sCiAgICAgbmV3IFBsYXllcigpIHsgTmFtZSA9ICJSYW5keSBNb3NzIiwgQWdlID0gMzUsIFBvc2l0aW9uID0gIldSIiwgU2FsYXJ5ID0gNzAwMDAwMCB9LAogICAgIG5ldyBQbGF5ZXIoKSB7IE5hbWUgPSAiTWFydmluIEhhcnJpc29uIiwgQWdlID0gMzgsIFBvc2l0aW9uID0gIldSIiwgU2FsYXJ5ID0gMTEwMDAwMDAgfSwKICAgICBuZXcgUGxheWVyKCkgeyBOYW1lID0gIkRlbWFyeWl1cyBUaG9tYXMiLCBBZ2UgPSAyMywgUG9zaXRpb24gPSAiV1IiLCBTYWxhcnkgPSA1MDAwMDAwIH0sCiAgICAgbmV3IFBsYXllcigpIHsgTmFtZSA9ICJSeWFuIENsYWR5IiwgQWdlID0gMjYsIFBvc2l0aW9uID0gIk9UIiwgU2FsYXJ5ID0gMTAwMDAwMDAgfSwKfTsKCiAgICAgICAgICAgIHZhciBoaWdoZXN0UGFpZFBsYXllcnMgPSBmcm9tIHBsIGluIHBsYXllcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwIHBsIGJ5IHBsLlBvc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF4ID0gZy5NYXgoeCA9PiB4LlNhbGFyeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF4UGwgPSBnLldoZXJlKHggPT4geC5TYWxhcnkgPT0gbWF4KS5GaXJzdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0IG1heFBsOwoKICAgICAgICAgICAgdmFyIGhpZ2hlc3RQYWlkUGxheWVyczIgPQogICAgICAgICAgICAgICAgcGxheWVycy5Hcm91cEJ5KHAgPT4gcC5Qb3NpdGlvbikuU2VsZWN0KHggPT4geC5XaGVyZShwID0+IHAuU2FsYXJ5ID09IHguTWF4KG0gPT4gbS5TYWxhcnkpKS5GaXJzdCgpKTsKCgogICAgICAgICAgICBmb3JlYWNoIChQbGF5ZXIgcGxheWVyIGluIGhpZ2hlc3RQYWlkUGxheWVycykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlRoZSBoaWdoZXN0IHBhaWQgezB9IGlzIHsxfSwgd2hvIGlzIGJlaW5nIHBhaWQgezJ9IiwgcGxheWVyLlBvc2l0aW9uLCBwbGF5ZXIuTmFtZSwgcGxheWVyLlNhbGFyeSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFN5c3RlbS5Db25zb2xlLldyaXRlTGluZSgiLS0tLS0tLS0tLS0iKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKFBsYXllciBwbGF5ZXIgaW4gaGlnaGVzdFBhaWRQbGF5ZXJzMikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlRoZSBoaWdoZXN0IHBhaWQgezB9IGlzIHsxfSwgd2hvIGlzIGJlaW5nIHBhaWQgezJ9IiwgcGxheWVyLlBvc2l0aW9uLCBwbGF5ZXIuTmFtZSwgcGxheWVyLlNhbGFyeSk7CiAgICAgICAgICAgIH0KICAgICAgICB9Cn0KfQ==