The comparer gets called over and over and never finishes when I call orderProb().ToList(). Am I doing something wrong?
public class PreferredAddressComparer : IComparer<AddressTest>
{
public int Compare(AddressTest x, AddressTest y)
{
//default address
if (x.defaultAddress == true)
{
return 1;
}
if (y.defaultAddress == true)
{
return -1;
}
var addressTypeOrder = new[] { 1, 4, 2, 3, 5 };
foreach (var addressTypeId in addressTypeOrder)
{
if (x.addressTypeId == addressTypeId)
{
return 1;
}
if (y.addressTypeId == addressTypeId)
{
return -1;
}
}
return 0;
}
}
public class AddressTest
{
public int addressId { get; set; }
public bool? defaultAddress { get; set; }
public int? addressTypeId { get; set; }
}
---------------------------------------
public IEnumerable<AddressTest> orderProb()
{
var addresses = new[] {new AddressTest
{
addressId = 1,
addressTypeId = 1
},
new AddressTest
{
addressId = 2,
addressTypeId = 2
} };
var comparer = new PreferredAddressComparer();
return addresses.OrderBy(x => x, comparer);
}