如何解决如何在C#中将函数转换为比较器
我必须以这种方式对列表进行排序,所以我必须在变量中使用函数
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)));
IComparer实现
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,1
return 0;
});
某些类型具有默认的比较器,如下所示:
List<DateTime> list = new List<DateTime>();
list.Sort(Comparer<DateTime>.Default);
或:
List<DateTime> list = new List<DateTime>();
list.Sort(DateTime.Compare);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。