我有一个字符串列表,让我们说
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
。为什么会出现这个错误。我的列表包含了为什么显示无效的所有数据?
方式列表定义列表是否有问题?
答案 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;