C# 如何在Visual C中使用DataReader处理多个结果?
我有一个存储过程,它返回两个表。例如,表1有{1,2,3,4,5},表2有{a,b,c,d,e}。例如{1,a},{2,b}类似地,它们都是相关的 在我的阅读器中,我必须将所有这些数据读入一个列表。对象将有两个属性,其中{1,a}go。这是我现在掌握的密码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
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}?