如何编写一个通用的排序扩展

这个问题在这里已经有了答案:

  • 如何按对象中的属性排序列表<T> 19答案

  • 你是否打算使列表元素通用? 喜欢这个:

    public static class ObjectExtension
    {
        public static List<T> Sort<T>(this List<T> list) where T : IFoo
        {
            list.Sort((x, y) => string.Compare(x.Name, y.Name));
            return list;
        }
    }
    
    public interface IFoo {
        string Name { get; }
    }
    
    public class Foo1 {
        public string Name { get; set; }
    }
    
    public class Foo2 {
        public string Name { get; set; }
    }
    

    您的参数应该是您的类型的集合,因此您可以将其作为集合对待,并访问Name属性:

    public static class ObjectExtension
    {
        public static List<Foo> MyGenericSortFunction(this List<Foo> list)
        {
            list.Sort((x, y) => string.Compare(x.Name, y.Name));
            return list;
        }
    }
    

    你不会在这里使用泛型,因为你特别需要使用Name ,它是Foo类的一个属性。 如果它是在一个接口中定义的,你可以使你的扩展通用于接口。

    请注意,这会编辑现有列表,而不是返回像LINQ那样的新列表。

    链接地址: http://www.djcxy.com/p/70955.html

    上一篇: How to write a generic sort extension

    下一篇: Sort a List<string[]> by the second value (int)