I have a List of objects in C#. All of the objects contain a property ID. There are several objects that have the same ID property.
How can I trim the List (or make a new List) where there is only one object per ID property?
[Any additional duplicates are dropped out of the List]
Remove only the duplicatesUse the skip(…) expression to skip the first item and loop through the rest in another 'Apply to each'. Then just delete all the remaining items using their ID. At the end of the flow you'll have only the unique items in the list.
If you want to avoid using a third-party library, you could do something like:
var bar = fooArray.GroupBy(x => x.Id).Select(x => x.First()).ToList();
That will group the array by the Id property, then select the first entry in the grouping.
MoreLINQ DistinctBy()
will do the job, it allows using object proeprty for the distinctness. Unfortunatly built in LINQ Distinct()
not flexible enoght.
var uniqueItems = allItems.DistinctBy(i => i.Id);
DistinctBy()
Returns all distinct elements of the given source, where "distinctness" is determined via a projection and the default eqaulity comparer for the projected type.
PS: Credits to Jon Skeet for sharing this library with community
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With