using System; using System.Linq; public class Test { public static void Main() { var data = new [] { new { Status = "Confirmed", Hometeam = "Fylkir", Outteam = "Valur", GoalsHometeams = 3, GoalsOutteams = 1 }, new { Status = "Confirmed", Hometeam = "Selfoss", Outteam = "Grindavik", GoalsHometeams = 3, GoalsOutteams = 3 }, new { Status = "Confirmed", Hometeam = "Keflavik", Outteam = "IBV", GoalsHometeams = 1, GoalsOutteams = 0 }, new { Status = "Confirmed", Hometeam = "Stjarnan", Outteam = "IA", GoalsHometeams = 1, GoalsOutteams = 1 }, new { Status = "Open", Hometeam = "Selfoss", Outteam = "Grindavik", GoalsHometeams = 3, GoalsOutteams = 3 }, new { Status = "Confirmed", Hometeam = "Breioablik", Outteam = "Fram", GoalsHometeams = 0, GoalsOutteams = 2 }, new { Status = "Open", Hometeam = "Selfoss", Outteam = "Grindavik", GoalsHometeams = 3, GoalsOutteams = 2 }, new { Status = "Open", Hometeam = "Fylkir", Outteam = "Valur", GoalsHometeams = 3, GoalsOutteams = 1 }, new { Status = "Open", Hometeam = "Selfoss", Outteam = "Grindavik", GoalsHometeams = 3, GoalsOutteams = 1 }, new { Status = "Open", Hometeam = "Keflavik", Outteam = "IBV", GoalsHometeams = 1, GoalsOutteams = 0 }, new { Status = "Open", Hometeam = "Fylkir", Outteam = "Valur", GoalsHometeams = 2, GoalsOutteams = 1 }, new { Status = "Open", Hometeam = "Breioablik", Outteam = "Fram", GoalsHometeams = 0, GoalsOutteams = 2 }, new { Status = "Open", Hometeam = "Selfoss", Outteam = "Grindavik", GoalsHometeams = 2, GoalsOutteams = 1 }, new { Status = "Open", Hometeam = "Stjarnan", Outteam = "IA", GoalsHometeams = 1, GoalsOutteams = 1 }, new { Status = "Open", Hometeam = "Stjarnan", Outteam = "IA", GoalsHometeams = 1, GoalsOutteams = 1 }, new { Status = "Open", Hometeam = "Breioablik", Outteam = "Fram", GoalsHometeams = 0, GoalsOutteams = 2 }, new { Status = "Open", Hometeam = "Keflavik", Outteam = "IBV", GoalsHometeams = 1, GoalsOutteams = 0 }, new { Status = "Open", Hometeam = "Selfoss", Outteam = "Grindavik", GoalsHometeams = 2, GoalsOutteams = 1 }, new { Status = "Open", Hometeam = "Fylkir", Outteam = "Valur", GoalsHometeams = 2, GoalsOutteams = 1 }, new { Status = "Open", Hometeam = "Stjarnan", Outteam = "IA", GoalsHometeams = 1, GoalsOutteams = 0 }, new { Status = "Open", Hometeam = "Fylkir", Outteam = "Valur", GoalsHometeams = 2, GoalsOutteams = 0 }, new { Status = "Open", Hometeam = "Selfoss", Outteam = "Grindavik", GoalsHometeams = 1, GoalsOutteams = 1 }, new { Status = "Open", Hometeam = "Breioablik", Outteam = "Fram", GoalsHometeams = 0, GoalsOutteams = 1 }, new { Status = "Open", Hometeam = "Selfoss", Outteam = "Grindavik", GoalsHometeams = 1, GoalsOutteams = 0 }, new { Status = "Open", Hometeam = "Fylkir", Outteam = "Valur", GoalsHometeams = 1, GoalsOutteams = 0 }, new { Status = "Open", Hometeam = "Keflavik", Outteam = "IBV", GoalsHometeams = 0, GoalsOutteams = 0 }, new { Status = "Open", Hometeam = "Fylkir", Outteam = "Valur", GoalsHometeams = 0, GoalsOutteams = 0 }, new { Status = "Open", Hometeam = "Breioablik", Outteam = "Fram", GoalsHometeams = 0, GoalsOutteams = 0 }, new { Status = "Open", Hometeam = "Selfoss", Outteam = "Grindavik", GoalsHometeams = 0, GoalsOutteams = 0 }, new { Status = "Open", Hometeam = "Stjarnan", Outteam = "IA", GoalsHometeams = 0, GoalsOutteams = 0 }, }; var result = data.GroupBy(d => new { Hometeam = d.Hometeam, Outteam = d.Outteam }) .Select(g => g.OrderBy(d => d.Status) .ThenByDescending(d => d.GoalsHometeams + d.GoalsOutteams) .First()); Console.WriteLine("Current game status results:"); foreach (var entry in result) Console.WriteLine(entry.Status + ", " + entry.Hometeam + ", " + entry.Outteam + ", " + entry.GoalsHometeams + ", " + entry.GoalsOutteams); } }