dotnet / dotnet-api-docs

.NET API reference documentation (.NET 5+, .NET Core, .NET Framework)
https://docs.microsoft.com/dotnet/api/
Other
679 stars 1.52k forks source link

.Net 8+ LINQ examples with EqualityComparer.Create #9851

Open AshbyGeek opened 2 months ago

AshbyGeek commented 2 months ago

in .Net 8 new class was created to allow using lambdas anywhere that IQualityComparer is used. According to https://github.com/dotnet/runtime/issues/101448 the reasoning was that adding lambda functionality everywhere IEqualityComparer is used would become a maintenance headache.

Unfortunately, EqualityComparer.Create is very new and not well enough known to show up on google searches or otherwise be easily discoverable.

I propose adding small example snippets that demonstrate this new functionality so that it can be more easily discovered. For example: in Enumerable.SequenceEqual(IEnumerable, IEnumerable, IEqualityComparer)-system-collections-generic-ienumerable((-0))-system-collections-generic-iequalitycomparer((-0))))

The following example demonstrates how a lambda function can be used to compare to sequences:

ProductA[] storeA = { new ProductA { Name = "apple", Code = 9 },
                       new ProductA { Name = "orange", Code = 4 } };

ProductA[] storeB = { new ProductA { Name = "apple", Code = 9 },
                       new ProductA { Name = "orange", Code = 4 } };

IEqualityComparer<ProductA> comparer = EqualityComparer.Create((first,second) => first.Code == second.Code);
bool equalAB = storeA.SequenceEqual(storeB, comparer);

Console.WriteLine("Equal? " + equalAB);

/*
    This code produces the following output:

    Equal? True
*/
dotnet-policy-service[bot] commented 2 months ago

Tagging subscribers to this area: @dotnet/area-system-linq