using System.Collections.Generic;
public static void Main()
var records = new List<Record>
new Record { PK = 1, FK = 1, Date = new DateTime(2022, 12, 31) },
new Record { PK = 2, FK = 1, Date = new DateTime(2022, 1, 1) },
new Record { PK = 3, FK = 2, Date = new DateTime(2022, 7, 4) },
new Record { PK = 4, FK = 3, Date = new DateTime(2022, 9, 3) },
new Record { PK = 5, FK = 4, Date = new DateTime(2022, 1, 1) },
new Record { PK = 6, FK = 4, Date = new DateTime(2022, 4, 26) },
new Record { PK = 7, FK = 4, Date = new DateTime(2022, 3, 3) },
new Record { PK = 8, FK = 5, Date = new DateTime(2022, 10, 14) },
var groupedClass = records
.GroupBy(record => record.FK)
.Select(grp => grp.MaxBy(record => record.Date));
foreach (var record in groupedClass) Console.WriteLine($"PK: {record.PK}, FK: {record.FK}, Date: {record.Date:dd.MM.yyyy}");