Get duplicates from C# List<object>

c#, linq, list

Solution

List<ListItem> entitiesList = new List<ListItem>();
//some code to fill the list
var duplicates = entitiesList.OrderByDescending(e => e.createdon)
                    .GroupBy(e => e.accountNumber)
                    .Where(e => e.Count() > 1)
                    .Select(g => new
                    {
                        MostRecent = g.FirstOrDefault(),
                        Others = g.Skip(1).ToList()
                    });

foreach (var item in duplicates)
{
    ListItem mostRecent = item.MostRecent;
    List<ListItem> others = item.Others;
    //do stuff with others
}

Problem

I have the following List definition: ``` class ListItem { public int accountNumber { get; set; } public Guid locationGuid { get; set; } public DateTime createdon { get; set; } } class Program { static void Main(string[] args) { List<ListItem> entitiesList = new List<ListItem>(); // Some code to fill the entitiesList } } ``` There are duplicates in the accountNumbers of the entitiesList. I want to find the duplicate accountNumbers, do an action on the locationGuids with a createdon date that is not the most recent createdon date of the duplicates. How can I manipulate the list to get only for the duplicates the accountNumber, most recently created locationGuid and the (older) locationGuids?

Original source

Related problems