https://github.com/karenpayneoregon/comparing-objects-csharp
Comparing objects
https://github.com/karenpayneoregon/comparing-objects-csharp
comparable compare csharp csharp11 iequalitycomparer
Last synced: 8 months ago
JSON representation
Comparing objects
- Host: GitHub
- URL: https://github.com/karenpayneoregon/comparing-objects-csharp
- Owner: karenpayneoregon
- Created: 2021-05-06T22:22:11.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-11-30T14:17:57.000Z (over 3 years ago)
- Last Synced: 2025-03-23T18:17:33.371Z (12 months ago)
- Topics: comparable, compare, csharp, csharp11, iequalitycomparer
- Language: C#
- Homepage:
- Size: 94.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# About
Provides various examples for comparing objects. Most examples on the web usually deal with simple list of string or int while code samples here show how to work with `List`. Keep in mind that the examples are a starting point to learn from as it is not possible to cover all situations.
:heavy_check_mark: Code will be added over time.
 
:heavy_check_mark: 11/30/2022 Updated to .NET Core 7 from .NET Core 5 which is out of support.
---
:white_circle: json read using System.Text.Json;
:white_circle: JsonLibrary provides json read operations
:white_circle: ApplicationDataLibrary containers comparers
## Sample
```csharp
[TestMethod]
[TestTraits(Trait.Distinct)]
public void FirstNameLastName_Equality_Comparer()
{
var people = ReadPeopleFromFile;
people.Add(people[0]);
Assert.AreEqual(people.Count, 51);
var distinct = people.Distinct(new FirstNameLastNameEqualityComparer());
Assert.IsTrue(distinct.Count() == 50);
}
```
```csharp
public class FirstNameComparer : IEqualityComparer
{
public bool Equals(Person x, Person y)
{
if (ReferenceEquals(x, y)) return true;
if (ReferenceEquals(x, null)) return false;
if (ReferenceEquals(y, null)) return false;
if (x.GetType() != y.GetType()) return false;
return x.FirstName == y.FirstName;
}
public int GetHashCode(Person obj)
{
return (obj.FirstName != null ? obj.FirstName.GetHashCode() : 0);
}
}
```
### Wrappers
```csharp
public class Wrappers
{
public static IEqualityComparer FirstNamEqualityComparer =>
Equality.CreateComparer(p => p.FirstName);
public static IEqualityComparer LastNamEqualityComparer =>
Equality.CreateComparer(p => p.LastName);
public static LambdaEqualityComparer FirstNameLambda =>
new((p1, p2) =>
p1.FirstName == p2.FirstName, x => x.FirstName.GetHashCode());
public static LambdaEqualityComparer LastNameLambda =>
new((p1, p2) =>
p1.LastName == p2.LastName, x => x.LastName.GetHashCode());
}
```