对要分配给Combobox的列表进行排序

时间:2013-01-19 13:15:17

标签: c# .net wpf .net-4.5 generic-list

我有一个字符串列表,让我们说

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();

intellisense throws error无法将类型“void”隐式转换为System.collections.IEnumerable。为什么会出现这个错误。我的列表包含了为什么显示无效的所有数据? 方式列表定义列表是否有问题?

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

这是因为.Sort()不返回“新”排序列表。它只是对那个令人兴奋的人进行排序。

只做

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