我必须以这种方式对列表进行排序,所以我必须使用变量中的函数
Func<Elem, Elem, int> w = (elem1, elem2) => DateTime.Compare(elem1.Date, elem2.Date);
list.Sort(w);
如何将函数强制转换为比较器?
您可以使用Comparison<Elem>
类或创建实现IComparer<Elem>
的类
list.Sort(new Comparison<Elem>((v1, v2) => DateTime.Compare(v1.Date, v2.Date)));
I公司实施
public class ElemComparer : IComparer<Elem>
{
public int Compare(Elem x, Elem y)
{
return DateTime.Compare(x.Date, y.Date);
}
}
使用ElemComparer
list.Sort(new ElemComparer());
对于任何可以自行实现的类型:
List<object> list = new List<object>();
list.Sort((e1, e2) =>
{ // Do compensation based on e1 and e2, and return -1, 0, 1
return 0;
});
有些类型有默认的比较器,比如:
List<DateTime> list = new List<DateTime>();
list.Sort(Comparer<DateTime>.Default);
或:
List<DateTime> list = new List<DateTime>();
list.Sort(DateTime.Compare);