首页 > 解决方案 > 如何在 C# 中将函数转换为比较器

问题描述

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

Func<Elem, Elem, int> w = (elem1, elem2) => DateTime.Compare(elem1.Date, elem2.Date);
list.Sort(w);

如何将函数转换为比较器?

标签: c#lambda-calculus

解决方案


您可以使用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());

推荐阅读