.NET 6 introduces a series of new extension methods on System.Linq namespace to ease handling IEnumerable in many ways, such as MinBy, MaxBy, DistinctBy, ExceptBy, IntersectBy and UnionBy.
I’ll be focusing on the signatures without the IEqualityComparer argument.
By the way…
MinBy
TSource? MinBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);MaxBy
TSource? MaxBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);MinBy and MinBy bring very convenient ways to find the minimum and maximum elements respectively, by using a property as a key selector. Unlike the known Min and Max methods available till now, it does not require the element objects to implementIComparable.
DistinctBy
IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);DistinctBy as the name suggests will return only the distinct elements from two IEnumerable collections, by using a property as a key selector.
ExceptBy
IEnumerable<TSource> ExceptBy<TSource, TKey>(this IEnumerable<TSource> first, IEnumerable<TKey> second, Func<TSource, TKey> keySelector);ExceptBy will bring only the elements from a given IEnumerable that couldn’t be found on a second IEnumerable of the same type. Likewise the others, it uses a property as a key selector, which has to be common between the collections you’re excepting by.
IntersectBy
IEnumerable<TSource> IntersectBy<TSource, TKey>(this IEnumerable<TSource> first, IEnumerable<TKey> second, Func<TSource, TKey> keySelector);Differently from ExceptBy, IntersectBy will bring only the elements that exist on the two IEnumerable collections you’re intersecting by.
UnionBy
IEnumerable<TSource> UnionBy<TSource, TKey>(this IEnumerable<TSource> first, IEnumerable<TSource> second, Func<TSource, TKey> keySelector);UnionBy as the name suggests unifies the elements of two given IEnumerable collections and again uses a common field as a key selector.
Hands-On
I have written an example using all these methods against a list of objects.
