在从List<>
继承的类中,如何通过键选择器(如Order by)对其进行排序。
public class BusinessRuleCollection : List<BusinessRule>
{
Read()
{
// After the reading here, I wonder if I could do the following:
this.Sort(p => p.ID);
}
}
答案 0 :(得分:6)
您可以添加扩展方法:
public static void Sort<TSource,TValue>(
this List<TSource> list,
Func<TSource,TValue> selector)
{
var comparer = Comparer<TValue>.Default;
list.Sort((x,y) => comparer.Compare(
selector(x), selector(y)));
}
应该做什么。
答案 1 :(得分:3)
不完全 - Sort
需要Comparison<T>
(或IComparer<T>
)而p => p.ID
无法转换为Comparison<T>
。你可以这样做:
Sort((p, q) => p.ID.CompareTo(q.ID))
虽然。或者在MiscUtil我ProjectionComparer
实施了IComparer<T>
,因此您可以使用以下内容:
Sort(ProjectionComparer<BusinessRule>.Create(p => p.ID));