2017-01-25 3 views
0

私は2つのテーブルを返すストアドプロシージャを持っています。表1は例えば{1,2,3,4,5}を有し、表2は{a、b、c、d、e}を有する。たとえば、{1、a}、{2、b}はすべて同様に関連しています。Visual C#でDataReaderを使用して複数の結果を処理する方法

私の読者は、これらのデータをすべてリストに読み込む必要があります。オブジェクトには、{1、a}が行く2つのプロパティがあります。これは私が今持っているコードで、ここで何が起こっている

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のトランザクションのIdsと10の金額を返す場合、私の最終的な結果は、1つのトランザクションおよびそれにマッピングされた10枚の金額のみを持っています。同等の金額で10回取引を取得するにはどうすればよいですか?

+2

私は、2つではなく1つの結果セットを返すようにストアドプロシージャを変更する方がよいと思います。 –

+0

これを行う方法は他にありますか? – user1890098

+0

おそらく他の方法もありますが、戻ってきたテーブルを記述した方法から、{1、a}、{2、b}ではなく{1、a、b} {2、c}? –

答えて

1

このように、SqlDataReaderから複数の結果セットにアクセスすることはできません。一度に1つの結果セットからすべての行にアクセスできます。次の結果セットに移動すると、前の結果セットに戻ることはできません。

次は、SqlDataReaderの複数の結果セットからデータを取得する方法のサンプルコードです。

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

if (reader.NextResult()) 
{ 
    while (reader.Read()) 
    { 
     Console.WriteLine(reader.GetString(0)); 
    } 
} 
関連する問題