Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Visual C中使用DataReader处理多个结果?_C#_C# 4.0_Sqldatareader - Fatal编程技术网

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

C# 如何在Visual C中使用DataReader处理多个结果?,c#,c#-4.0,sqldatareader,C#,C# 4.0,Sqldatareader,我有一个存储过程,它返回两个表。例如,表1有{1,2,3,4,5},表2有{a,b,c,d,e}。例如{1,a},{2,b}类似地,它们都是相关的 在我的阅读器中,我必须将所有这些数据读入一个列表。对象将有两个属性,其中{1,a}go。这是我现在掌握的密码 while(reader.Read()) { Transaction transaction = null; transactions.Add(transaction = new

我有一个存储过程,它返回两个表。例如,表1有{1,2,3,4,5},表2有{a,b,c,d,e}。例如{1,a},{2,b}类似地,它们都是相关的

在我的阅读器中,我必须将所有这些数据读入一个列表。对象将有两个属性,其中{1,a}go。这是我现在掌握的密码

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")),
                    });
                }
            }
        }

这里发生的事情是,如果我返回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));
    }
}

我认为最好将存储过程更改为返回一个结果集而不是两个。没有其他方法可以这样做吗?可能有其他方法可以这样做,但是从您描述返回的表的方式来看,您如何确定它是{1,a},{2,b}而不是{1,a,b},{2,c}?