Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Comparer<T>.Create in .NET 4

Tags:

c#

.net-4.0

I have created a Comparer in .Net 4.5:

public static Comparer<Room> RoomComparer = 
  Comparer<Room>.Create((a, b) => a.RoomId.CompareTo(b.RoomId))

How can i create Comparer in c# .NET 4.0?

like image 298
RayOldProf Avatar asked Dec 09 '22 01:12

RayOldProf


2 Answers

public class RoomComparer: IComparer<Room>
{
    int Compare(Room a, Room b)  
    {
        return  (a == null && b == null) ? 0
            : (a == null) ? -1
            : (b == null) ? 1
            : a.RoomId.CompareTo(b.RoomId);
    }
}
like image 23
Richard Schneider Avatar answered Dec 28 '22 02:12

Richard Schneider


You can use the following

public static class Comparer
{
    public static Comparer<T> Create<T>(Comparison<T> comparison)
    {
        if (comparison == null) throw new ArgumentNullException("comparison");
        return new ComparisonComparer<T>(comparison);
    }
    private sealed class ComparisonComparer<T> : Comparer<T>
    {
        private readonly Comparison<T> comparison;
        public ComparisonComparer(Comparison<T> comparison)
        {
            this.comparison = comparison;
        }
        public override int Compare(T x, T y)
        {
            return comparison(x, y);
        }
    }
}

like this

public static Comparer<Room> RoomComparer = 
  Comparer.Create<Room>((a, b) => a.RoomId.CompareTo(b.RoomId))
like image 108
Ivan Stoev Avatar answered Dec 28 '22 04:12

Ivan Stoev