1

文字列のリストがあります

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 はエラーをスローします。型 "void" を に暗黙的に変換できませんSystem.collections.IEnumerable。このエラーが発生する理由。私のリストにはすべてのデータがあるのに、なぜ無効と表示されるのですか? リストがリストを定義する方法に何か問題がありますか?

4

4 に答える 4

8

このSort()メソッドには戻り値がないため (リストをその場でソートして を返しますvoid)。最初に並べ替えてから、リストを項目ソースに割り当てる必要があります。

mia.Sort();
comboOpthol.ItemsSource = mia;
于 2013-01-19T13:18:09.880 に答える
2

List<T>.Sortは新しいリストを返さず、既存のリストをソートします。

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

を使用して、データベース レベルで結果を並べ替えることを検討してくださいORDER BY

質問にタグを付けたので、linqlinqだと思います。List<T>.Sort()ではなく、 の方法ですList<T>

于 2013-01-19T13:18:30.460 に答える
1

ソースとして設定する前にソートする必要があります。

mia.Sort();
comboOpthol.ItemsSource =mia;
于 2013-01-19T13:18:48.223 に答える
1

これは、.Sort() が「新しい」ソート済みリストを返さないために発生しています。既存のものをソートするだけです。

やるだけ

mia.Sort();
comboOpthol.ItemsSource = mia;
于 2013-01-19T13:19:08.963 に答える