Tôi đang cố viết một trình so sánh đối tượng chung để sắp xếp, nhưng tôi đã nhận thấy nó không xử lý cá thể trong đó một trong các giá trị mà nó so sánh là rỗng. Khi một đối tượng là null, tôi muốn nó xử lý nó giống như chuỗi rỗng. Tôi đã thử thiết lập các giá trị null cho String.Empty nhưng sau đó tôi nhận được một lỗi của "Object phải được loại String" khi gọi CompareTo() trên đó.Làm cách nào để tôi có thể làm cho trình so sánh chung (IComparer) xử lý các giá trị rỗng?
public int Compare(T x, T y)
{
PropertyInfo propertyInfo = typeof(T).GetProperty(sortExpression);
IComparable obj1 = (IComparable)propertyInfo.GetValue(x, null);
IComparable obj2 = (IComparable)propertyInfo.GetValue(y, null);
if (obj1 == null) obj1 = String.Empty; // This doesn't work!
if (obj2 == null) obj2 = String.Empty; // This doesn't work!
if (SortDirection == SortDirection.Ascending)
return obj1.CompareTo(obj2);
else
return obj2.CompareTo(obj1);
}
Tôi khá mắc kẹt với điều này ngay bây giờ! Bất kỳ trợ giúp sẽ được đánh giá cao.
Cảm ơn Anthony, điều đó có tác dụng! Tôi không thực sự biết tại sao tôi không bao giờ có vẻ phát hiện ra giải pháp đơn giản ... – NickG