0

我有一些遗留代码,我正在慢慢迁移到 C# MVC。如何从数据表或数据集创建下拉列表?我不想创建属性并遍历列表,因为我有太多古老的 MS Access 查询要处理。

控制器:

 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

正如 George 所说,我建议将域逻辑移动到数据访问层并使用实体来保存从查询返回的对象。您可以使用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 回答