public void Sort(RtItemSortOrder order) { if (order != RtItemSortOrder.Place) { Items.Sort(delegate(RtItem item1, RtItem item2) { return(CompareRtItems(item1, item2, order)); }); } }
private static int CompareRtItems(RtItem item1, RtItem item2, RtItemSortOrder order) { if (item1 == null && item1 == null) { return(0); } else if (item1 == null) { return(-1); } else if (item1 == null) { return(1); } switch (order) { case RtItemSortOrder.Surname: if (!string.IsNullOrEmpty(item1.LastName) && !string.IsNullOrEmpty(item2.LastName)) { return(item1.LastName.CompareTo(item2.LastName)); } break; case RtItemSortOrder.FirstName: if (!string.IsNullOrEmpty(item1.FirstName) && !string.IsNullOrEmpty(item2.FirstName)) { return(item1.FirstName.CompareTo(item2.FirstName)); } break; case RtItemSortOrder.City: if (!string.IsNullOrEmpty(item1.City) && !string.IsNullOrEmpty(item2.City)) { return(item1.City.CompareTo(item2.City)); } break; case RtItemSortOrder.Rating: return(Math.Sign(item2.Rating - item1.Rating)); } return(Math.Sign(item1.Place - item2.Place)); }