using System.Collections.Generic;
public static void Main()
Console.WriteLine("Hello World");
List<File> list = new List<File>();
list.Add(new File("file1", "1", DateTime.Parse("2021-01-01")));
list.Add(new File("file2", "1", DateTime.Parse("2021-01-08")));
list.Add(new File("file3", "2", DateTime.Parse("2021-01-01")));
list.Add(new File("file1", "3", DateTime.Parse("2021-01-01")));
list.Add(new File("file2", "3", DateTime.Parse("2021-01-08")));
list.Add(new File("file3", "4", DateTime.Parse("2021-01-08")));
var results = from l in list
group l by l.identifier into g
select new { Id = g.Key, Files = g.ToList() };
var set2 = results.Where( x => x.Files.Count == 1).Select( y => y.Files.First()).ToList();
var set3 = results.Where( x => x.Files.Count > 1);
var set4 = set3.Select( x => x.Files.OrderByDescending( y => y.fileDate ).First());
var excludeList = list.Except(set2);
public File(string name, string id,DateTime date)
public string name {get;set;}
public string identifier {get;set;}
public DateTime fileDate {get;set;}
public static class Dumper
public static string ToPrettyString(this object value)
return JsonConvert.SerializeObject(value, Formatting.Indented);
public static T Dump<T>(this T value)
Console.WriteLine(value.ToPrettyString());