【问题标题】:C#: How do I sort an array list of objects by a specific parameter?C#:如何按特定参数对对象数组列表进行排序?
【发布时间】:2019-09-24 08:01:58
【问题描述】:

我有一个基本的对象数组列表。它接受一个字符串、一个双精度数、一个双精度数和一个字符串。我需要按最终字符串对列表进行排序。如何按 typeIn 对这个数组列表进行排序,这是一个字符串?

private void button1_Click(object sender, EventArgs e)
        {
            nameIn = textBox1.Text;
            lengthIn = Double.Parse(textBox2.Text);
            weightIn = Double.Parse(textBox3.Text);
            typeIn = textBox4.Text;

            Bird newBird = new Bird(nameIn, lengthIn, weightIn, typeIn);

            birdList.Add(newBird);

         var sortedList = Bird.birdlist.OrderBy(x => x.Type).ToList();

        }

它不允许我订购。错误中的红色下划线在Orderby下

【问题讨论】:

  • 您使用的术语有些不确定。排序和分组是两个不同的东西。
  • 当你说“对象的基本数组列表”是什么意思? ArrayListList<object>List<Bird>??
  • 您确定birdList.Add()Bird.birdlist.OrderBy() 是同一个列表吗?它是 Bird 类的静态字段吗?

标签: c# winforms sorting arraylist


【解决方案1】:

你可以试试OrderBy()Linq。 OrderBy 按升序对元素进行排序。

var sortedList = birdList.OrderBy(x => x.TypeIn).ToList();

这里我认为TypeIn是一个以字符串为数据类型的属性

【讨论】:

  • 我已经尝试过,但我不断收到错误:CS1061。我的数组列表在具有构造函数的类中,当我尝试您的解决方案时,它红色下划线 orderby
  • 您遇到了什么错误.. 请更新您的问题,包括错误以及到目前为止您尝试过的内容
  • 为什么是Bird.birdlist?是静态的吗?什么是错误请提及错误?红线表示编译时错误
  • 是的,我已经将 Bird 类中的鸟列表声明为 public static ArrayList birdlist = new ArrayList();。错误:“ArrayList”不包含“OrderBy”的定义,并且找不到接受“ArrayList”类型的第一个参数的可访问扩展方法“OrderBy”(您是否缺少 using 指令或程序集引用?)跨度>
  • 您是否将“使用 System.Linq”放在文件顶部?
猜你喜欢
  • 1970-01-01
  • 2018-02-11
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 2011-02-01
  • 1970-01-01
相关资源
最近更新 更多