我有一个字符串列表比如
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;