首页 > 解决方案 > 使用特定字段对自定义数组列表进行排序

问题描述

我想按邮政地址排序,但我无法看到一些 Linq 函数尝试过它们,但我似乎无法获得所需的所有必需参数。例如我看到了这个例子

list.Sort((p, q) => p.Category.CompareTo(q.Category)); /*has and error that says  cannot convert lamba expressions to type '|Comparer' because it is not a delegate*/

但我似乎不明白如何使用它。

我的自定义列表.cs

  class MyCustomList
    {
        private string name;
        private string postalAddress;


    public MyCustomList(string name, string postalAddress)
        {
            this.name = name;
            this.postalAddress = postalAddress;
        }

//getters and setters
   public string Name
        {
            get
            {
                return name;
            }

            set
            {
                name = value;
            }
        }

        public string PostalAddress
        {
            get
            {
                return postalAddress;
            }

            set
            {
                postalAddress = value;
            }
        }
}

Form1.cs

 ArrayList list = new ArrayList();
 list.Add(new MyCustomList("A somename","A Fake Postal Address");
 list.Add(new MyCustomList("B somename","B Fake Postal Address");

list.Sort(); // Sort by Postal adress

标签: c#sortingarraylist

解决方案


你真的需要使用ArrayList吗?

这是 .NET 前泛型时代的遗物,您应该尽可能地使用 .NET 的IEnumerable<T>实现List<T>

LINQ 在 上运行IEnumerable<T>,因此不适用于您的ArrayList,而您正在寻找的方法是OrderByor OrderByDescending

例子:

var list = new List<MyCustomList>();
list.Add(new MyCustomList("A somename","A Fake Postal Address"));
list.Add(new MyCustomList("B somename","B Fake Postal Address"));

list.OrderBy(cl => cl.Postcode); // Sort by Postal address

推荐阅读