Nếu bạn chỉ muốn Sort()
hoạt động, bạn sẽ cần phải triển khai IComparable
hoặc IComparable<T>
trong lớp học.
Nếu bạn không ngại tạo danh sách mới mới, bạn có thể sử dụng phương thức mở rộng OrderBy
/ToList
LINQ. Nếu bạn muốn sắp xếp danh sách hiện có với cú pháp đơn giản hơn, bạn có thể thêm một vài phương pháp mở rộng, cho phép:
list.Sort(item => item.Name);
Ví dụ:
public static void Sort<TSource, TValue>(
this List<TSource> source,
Func<TSource, TValue> selector)
{
var comparer = Comparer<TValue>.Default;
source.Sort((x, y) => comparer.Compare(selector(x), selector(y)));
}
public static void SortDescending<TSource, TValue>(
this List<TSource> source,
Func<TSource, TValue> selector)
{
var comparer = Comparer<TValue>.Default;
source.Sort((x, y) => comparer.Compare(selector(y), selector(x)));
}
Nguồn
2009-03-03 05:43:39
Mà sẽ nổ tung nếu a.Name là null ... –
Bạn chỉ có thể sử dụng string.Compare (a.Name, b.Name), cái nào sẽ an toàn? –
Cảm ơn! Tìm hiểu điều gì đó mới mỗi ngày ... Tôi sẽ chỉnh sửa câu trả lời. –