C# 从数据库创建对象列表

C# 从数据库创建对象列表,c#,sql,database,list,object,C#,Sql,Database,List,Object,我从Dummy01在以下问题中的另一个答案中“窃取”了一些代码: 问题是我想得到一个对象列表,而不是字符串 我必须如何修改此代码才能这样做?非常感谢你的帮助 问题发生在代码的这一部分,我不知道要指定什么类型 if (!reader.IsDBNull(0)) tagsList.Add(reader.GetString(0)); 代码: private void LoadList() { 列表标记列表=新列表(); 使用(IDbConnecti

我从Dummy01在以下问题中的另一个答案中“窃取”了一些代码:

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

我必须如何修改此代码才能这样做?非常感谢你的帮助

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

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

private void LoadList()
{
列表标记列表=新列表();
使用(IDbConnection connection=newSQLConnection(Properties.Settings.Default.DBConnectionString))
{
connection.Open();
使用(IDbCommand=connection.CreateCommand())
{
command.CommandText=“从TAGSTABLE中选择TAGCOLUMN”;
使用(IDataReader=command.ExecuteReader())
{
while(reader.Read())
{
如果(!reader.IsDBNull(0))
tagsList.Add(reader.GetString(0));
}
reader.Close();
}
}
connection.Close();
}
}

您是否尝试过将贴花
更改为
,因为我可以使用它您是否尝试过将贴花
更改为
,因为它对我来说很好

只需构造要实例化的类型的实例,并根据
读取器
返回的数据设置其属性

只需构造要实例化的类型的实例,并根据
读取器
返回的数据设置其属性我将向您提交您希望使用Dapper的对象列表。你可以通过NuGet在你的项目中获得整洁。完成后,您需要构建一个模仿
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);
    }
}
(请记住,这只是为了向您展示它的工作原理)

现在,您的代码如下所示:

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);
    }
}
private void LoadList()
{
列表标签列表;
使用(IDB)连接=
新的SqlConnection(Properties.Settings.Default.DBConnectionString))
{
tagsList=connection.Query(sqlStatement);
}
}

这里的
Query
方法是挂起
IDbConnection
的扩展方法;这就是整洁的工作原理。不仅代码简洁,映射也为您完成,而且Dapper速度很快。

因此,如果您想获得我提交给您的对象列表,您可以使用Dapper。你可以通过NuGet在你的项目中获得整洁。完成后,您需要构建一个模仿
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);
    }
}
(请记住,这只是为了向您展示它的工作原理)

现在,您的代码如下所示:

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);
    }
}
private void LoadList()
{
列表标签列表;
使用(IDB)连接=
新的SqlConnection(Properties.Settings.Default.DBConnectionString))
{
tagsList=connection.Query(sqlStatement);
}
}

这里的
Query
方法是挂起
IDbConnection
的扩展方法;这就是整洁的工作原理。不仅代码简洁,映射也为您完成,而且简洁快捷。

NET中的字符串是一个对象。实际上.NET中的所有类型都是从System.Object派生的。我不能得到你想要的原谅。你是说一个自定义对象,一个你已经声明的类吗?什么感谢您希望在集合中获取哪种类型的对象?.NET中的字符串是一个对象。实际上.NET中的所有类型都是从System.Object派生的。我不能得到你想要的原谅。你是说一个自定义对象,一个你已经声明的类吗?什么感谢您希望收藏哪种类型的物品?对不起,如果您愿意,我需要更多的解释。我似乎不能真正理解这个概念。我需要一份清单,但这部分要写什么?很抱歉,我无法理解简单的说明:)tagsList=connection.Query(sqlStatement);不明白用自己的语句切换出什么。@Matt,所以这里TagsTable变成了Movie,sqlStatement中的值变成了Movie表上的查询。Google Dapper dot net获取更多关于API的说明,因为他们也可以使用非常简单的API生成参数化SQL语句(例如,传入带有参数化过滤器的WHERE子句)。对不起,如果您愿意,我需要更多的解释。我似乎不能真正理解这个概念。我需要一份清单,但这部分要写什么?很抱歉,我无法理解简单的说明:)tagsList=connection.Query(sqlStatement);不明白用自己的语句切换出什么。@Matt,所以这里TagsTable变成了Movie,sqlStatement中的值变成了Movie表上的查询。Google Dapper dot net获取更多关于API的说明,因为它们也可以使用非常简单的API生成参数化SQL语句(例如,传递带有参数化过滤器的WHERE子句)。