如何在 Visual C# 中使用 DataReader 处理多个结果?

How to handle Multiple Results by Using the DataReader in Visual C#?

我有一个 return 两个 table 的存储过程。例如 Table 1 有 {1,2,3,4,5},table 2 将有 {a,b,c,d,e}。例如 {1,a}, {2,b} 同样都是相关的。

在我的 reader 中,我必须将所有这些数据读入一个列表。对象将有两个属性,其中 {1,a} 去。这是我现在的代码,

while(reader.Read())
        {
            Transaction transaction = null;
            transactions.Add(transaction = new Transaction()
            {
                TranID = reader.GetInt64(reader.GetOrdinal("TranID"))
            });

            if (reader.NextResult())
            {
                while (reader.Read())
                {
                    transaction.Amounts.Add(new Fund
                    {
                        Amount = reader.GetDecimal(reader.GetOrdinal("Amount")),
                    });
                }
            }
        }

如果我 return 10 个交易 ID 和 10 个金额,我的最终结果只有 1 个交易和 10 个金额映射到它。如何获得 10 笔等额交易?

您不能通过这种方式从 SqlDataReader 访问多个结果集。您一次可以访问一个结果集中的所有行。如果移动到下一个结果集,则无法返回到上一个结果集。

以下是如何从 SqlDataReader 的多个结果集中检索数据的示例代码。

while (reader.Read())
{
     Console.WriteLine(reader.GetString(0));
}

if (reader.NextResult())
{
    while (reader.Read())
    {
        Console.WriteLine(reader.GetString(0));
    }
}