using System.Collections.Generic;
public static void Main()
IList<File> filesList = new List<File>()
new File() { FileName="GCUS.zip", FileTimeStamp = DateTime.Parse("2.21.2019")} ,
new File() { FileName="GCUS.zip", FileTimeStamp = DateTime.Parse("2.20.2019")} ,
new File() { FileName="GCUS.zip", FileTimeStamp = DateTime.Parse("2.19.2019")} ,
new File() { FileName="GCUS.zip", FileTimeStamp = DateTime.Parse("2.18.2019")} ,
new File() { FileName="GCUS.zip", FileTimeStamp = DateTime.Parse("2.17.2019")} ,
new File() { FileName="GACS.zip", FileTimeStamp = DateTime.Parse("2.21.2019")} ,
new File() { FileName="GACS.zip", FileTimeStamp = DateTime.Parse("2.20.2019")} ,
new File() { FileName="GACS.zip", FileTimeStamp = DateTime.Parse("2.19.2019")} ,
new File() { FileName="GACS.zip", FileTimeStamp = DateTime.Parse("2.18.2019")} ,
new File() { FileName="GACS.zip", FileTimeStamp = DateTime.Parse("2.17.2019")}
var groupedFiles = from x in filesList
group x by x.FileName into A
FileTimeStamp = A.Max(x=>x.FileTimeStamp)
join g in groupedFiles on
f.FileName equals g.FileName
where f.FileTimeStamp == g.FileTimeStamp
foreach(var d in results){
Console.WriteLine(d.FileName + " " + d.FileTimeStamp);
public string FileName { get; set; }
public DateTime FileTimeStamp { get; set; }