C# 如何在C语言中将函数转换为比较器

C# 如何在C语言中将函数转换为比较器,c#,lambda-calculus,C#,Lambda Calculus,我必须以这种方式对列表排序,所以我必须在变量中使用函数 Func<Elem, Elem, int> w = (elem1, elem2) => DateTime.Compare(elem1.Date, elem2.Date); list.Sort(w); 如何将函数强制转换为comparer?您可以使用Comparation类或创建实现IComparer的类 对于您可以自行实现的任何类型: List<object> list = new List<objec

我必须以这种方式对列表排序,所以我必须在变量中使用函数

Func<Elem, Elem, int> w = (elem1, elem2) => DateTime.Compare(elem1.Date, elem2.Date);
list.Sort(w);
如何将函数强制转换为comparer?

您可以使用Comparation类或创建实现IComparer的类


对于您可以自行实现的任何类型:

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.Compare隐式转换为比较,因此您可以只使用list.SortDateTime.Compare。@Lee Elem不是DateTime。您可以使用DateTime。仅当您需要DateTimes的排序列表时进行比较,但元素列表的列表列表应该被排序
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);