c# - 从存储过程结果集中填充 ArrayList

标签 c# sql-server-2005 arraylist

我有一个返回一组整数的存储过程。我需要帮助在 C# (VS 2005) Web 应用程序中填充这些结果的 ArrayList。

我意识到这可能是一个非常简单的过程,但显然我没有相关技能,也没有词汇来研究它。

我的假设是此数据表已正确填充:

public static DataTable GetAllVendors()
{
     OleDbCommand cmd = Data.GetCommand(Configuration.DatabaseOwnerPrefix + ".GetAllInformationAndHelpVendorIds", Connections.MyDbConnection);
     return Data.RunCommand(cmd).Tables[0];
 }

我不知道如何将结果返回到 ArrayList 或其他可以使用 Contains() 方法计算的数据类型。

编辑:ArrayList 是一项较旧的技术,我会接受不使用它的建议。谢谢。

最佳答案

您应该做的是在该 cmd 对象上调用 ExecuteReader(),如下所示:

public static IEnumerable<int> GetAllVendors()
{
    using (var cmd = Data.GetCommand(Configuration.DatabaseOwnerPrefix + ".GetAllInformationAndHelpVendorIds", Connections.MyDbConnection))
    {
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                yield return reader.GetInt32(0);
            }
        }
    }
}

这假设 SQL 将返回一个表,其第一列(由 GetInt32() 方法的索引 0 标识)将是您要查找的 ID为了。如果 SQL 在另一列中返回 ID,只需将索引调整为您希望在其中找到它们的列。

此解决方案还要求命令的连接已经打开。如果不是,您可以在 cmd.ExecuteReader() 之前执行 cmd.Connection.Open()

关于c# - 从存储过程结果集中填充 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7237282/

相关文章:

c# - 我想要一个 c# IMAP 客户端。我可以继续使用这个新库吗?

c# - SQL 添加数据的权限以及如何验证?

c# - 当 DialogResult 为 No 时防止 Form 关闭

c# - LINQ 方法执行序列

c# - 为什么这个 LINQ 抛出 "FormatException was unhandled"?

java - 使用从其他类的方法中检索到的信息

c# - 我怎样才能使我的函数在 ArrayList 上以 "Contains"的速度运行?

sql-server - TSQL 将地址转换为邮寄地址 - SQL Server 2005

sql - 如何在unicode字符串中使用 'LIKE'语句?

android - 如何将选定的值传递给另一个 Activity ?