I'm trying to rewrite my IComparer<Animal>
to use a lambda expression, but I can't seem to get this done correctly
public class AnimalCarriageSorter : IComparer<Animal>
{
public int Compare(Animal animal, Animal targetAnimal)
{
//Compare diet first.
if (animal.FoodDiet.CompareTo(targetAnimal.FoodDiet) != 0)
{
return animal.FoodDiet.CompareTo(targetAnimal.FoodDiet);
}
//Compare size.
return targetAnimal.Size.CompareTo(animal.Size);
}
}
You could easily rewrite it using Func<Animal, Animal, int>
instead of the IComparer<Animal>
, e.g.
Func<Animal, Animal, int> comparer = (x, y) =>
x.FoodDiet.CompareTo(y.FoodDiet) != 0 ?
x.FoodDiet.CompareTo(y.FoodDiet) :
x.Size.CompareTo(y.Size)