using System.Collections.Generic;
public static void Main()
List<Row> rows = new List<Row>(){
new Row(){run=1,employee=9,employment=9, value = 1},
new Row(){run=5,employee=9,employment=9, value = 2},
new Row(){run=5,employee=9,employment=9, value = 3},
new Row(){run=3,employee=11,employment=11, value = 4},
new Row(){run=4,employee=11,employment=11, value = 5}
var result = rows.GroupBy(r => new { r.employee, r.employment })
.SelectMany(g => g.GroupBy(r => r.run).OrderByDescending(d => d.Key).First());
foreach (var r in result)
Console.WriteLine("result: {0}: run:{1} employee:{2} employment:{3} value:{4}", i, r.run, r.employee, r.employment, r.value);
var result2 = rows.GroupBy(r => new { r.employee, r.employment })
.SelectMany(g => g.GroupBy(r => r.run).OrderByDescending(d => d.Key).First())
.GroupBy(r => new { r.employee, r.employment });
foreach (var r in result2)
Console.WriteLine("result2: {0}: run:{1} employee:{2} employment:{3} value:{4}", i, c.run, key.employee, key.employment, c.value);