从数据库创建对象列表

时间:2014-05-22 12:38:06

标签: c# sql database list object

我已经'偷了'Dummy01在下面的问题中的另一个答案中的一些代码: How can I populate a list with values from a SQL Server database?

问题是我想得到一个对象列表而不是字符串

我如何修改此代码才能这样做?非常感谢。

问题出现在代码的这一部分,我不知道要指定什么类型。

  if (!reader.IsDBNull(0))
                        tagsList.Add(reader.GetString(0));

代码:

private void LoadList()
{
    List<string> tagsList = new List<string>();

    using (IDbConnection connection = new SqlConnection(Properties.Settings.Default.DBConnectionString))
    {
        connection.Open();    

        using (IDbCommand command = connection.CreateCommand())
        {
            command.CommandText = "SELECT TAGCOLUMN FROM TAGSTABLE";

            using (IDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    if (!reader.IsDBNull(0))
                        tagsList.Add(reader.GetString(0));
                }

                reader.Close();
            }
        }

        connection.Close();
    }
}

3 个答案:

答案 0 :(得分:4)

因此,如果您想获得我想要使用Dapper的对象列表。您可以通过NuGet在项目中获得Dapper。完成后,您需要构建一个模仿SELECT语句的类。为了论证,我们说你的SELECT陈述是:

SELECT * FROM TagsTable

让我们说TagsTable看起来像这样:

public class TagsTable
{
    public int Id { get; set; }
    public string Tag { get; set; }
}

(记住这只是为了告诉你它是如何工作的)

现在您的代码如下所示:

private void LoadList()
{
    List<TagsTable> tagsList;

    using (IDbConnection connection =
        new SqlConnection(Properties.Settings.Default.DBConnectionString))
    {
        tagsList = connection.Query<TagsTable>(sqlStatement);
    }
}

此处Query方法是一种挂起IDbConnection的扩展方法;这就是Dapper的工作原理。代码不仅简洁,而且为您完成了映射,但Dapper快速

答案 1 :(得分:0)

您是否尝试将声明<string>更改为<object>,因为我可以正常使用

答案 2 :(得分:0)

只需构造要实例化的类型的实例,并根据reader返回的数据设置它的属性。