0

ゆっくりとC#MVCに移行しているレガシーコードがあります。データテーブルまたはデータセットからドロップダウンリストを作成するにはどうすればよいですか?処理するには古いMSAccessクエリが多すぎるため、プロパティを作成してリストをループしたくありません。

コントローラ:

 using (SqlConnection Connection = new SqlConnection(ConnectionString))
        {
            string commandstring = "select column1 from table1";
            SqlCommand command = new SqlCommand(commandstring, Connection);
            Connection.Open();
            SqlDataAdapter da = new SqlDataAdapter();
            DataSet ds = new DataSet();
            da.SelectCommand = command;
            da.Fill(ds, "data1");
            Connection.Close();
        }
4

1 に答える 1

1

ジョージが述べたように、ドメインロジックをデータアクセス層に移動し、エンティティを使用してクエリから返されたオブジェクトを保持することをお勧めします。Dapperを使用すると、生のSQLクエリを使用して、結果をモデルにマッピングできます。そのパフォーマンスはと同じSqlDataReaderです。これは、モデルのリストを取得してドロップダウンリストに変換する拡張メソッドです。

public static IEnumerable<SelectListItem> ToSelectList<T, TTextProperty, TValueProperty>(this IEnumerable<T> instance, Func<T, TTextProperty> text, Func<T, TValueProperty> value, Func<T, bool> selectedItem = null)
{
    return instance.Select(t => new SelectListItem
    {
        Text = Convert.ToString(text(t)),
        Value = Convert.ToString(value(t)),
        Selected = selectedItem != null ? selectedItem(t) : false
    });
}

次に、次のようなコードを使用できます...

var list = SomeQuery();
list.ToSelectList(x => x.Name, x => x.id, x => x.id == selectedId);
于 2012-07-31T21:02:46.777 に答える