排序要分配给“组合框”的列表

本文关键字:组合框 列表 组合 分配 排序 | 更新日期: 2023-09-27 17:54:54

我有一个字符串列表比如

List<string> mia = new list<string>;

,我从数据库中添加数据到它

using (SqlCommand command = new SqlCommand("SELECT xyz FROM table",sqlConnection1))
{
     sqlConnection1.Open();
     using (SqlDataReader reader = command.ExecuteReader())
     {
          while (reader.Read())
          {
               mia.Add(reader["xyz"].ToString());
          }
     }
     sqlConnection1.Close();                     
}

数据添加成功。

combobox.ItemsSource =mia;

即使这样也可以

但是当我试着做

comboOpthol.ItemsSource =mia.Sort();

智能感知抛出错误不能隐式转换类型"void"到System.collections.IEnumerable。为什么会出现这个错误。我的列表有所有的数据,那么为什么显示它无效?列表定义列表的方式有问题吗?

排序要分配给“组合框”的列表

因为Sort()方法没有返回值(它对列表进行排序并返回void)。您需要先排序,然后将列表分配给项目源:

mia.Sort();
comboOpthol.ItemsSource = mia;

List<T>.Sort不返回一个新的列表,它对现有的列表进行排序。

mia.Sort();
comboOpthol.ItemsSource = mia;

考虑使用ORDER BY在数据库级对结果进行排序。

你用linq标记了你的问题,这让我相信你认为List<T>.Sort()是linq。它不是,它是List<T>的方法

您应该在将其设置为来源之前对其进行排序:

mia.Sort();
comboOpthol.ItemsSource =mia;

发生这种情况是因为. sort()没有返回一个"新的"排序列表。它只是对现有的进行排序。

只做

mia.Sort();
comboOpthol.ItemsSource = mia;