2016-10-21 4 views
0

から直接C#移入辞書、作成されています辞書にデータを取得するための3つのステップがあります。私が取り組んできたプログラムで、SqlDataReaderの

  1. がそれらを引くSQLコマンドを実行します

    DataTable、その後、
  2. に結果がDictionary

コードにDataTableを引っ張ります

私の質問は、「仲介者を切って」言い換えれば、SqlDataReaterのデータを辞書に直接引き込むことができますか?それとも最初にDataTableに引き込む必要がありますか?私がやろうとしていることが可能なら、誰かが私にポストコードをしてもらえますか?

ありがとうございました!

+0

これを試してください:myDr.Read(); while(myDr!= null) { customerLookup.Add(myDr ["code"]、myDr ["customerText"]); myDr.Read(); } – jdweng

答えて

0

はい、可能です。 SqlDataReader.Readメソッドを使用する必要があります。

あなたがリーダーによって返される行を通じてだけでループすることができます
3

var customerLookup = new Dictionary<string, string>(); 
using (var reader = myLookup.ExecuteReader()) 
{ 
    while (reader.Read()) 
    { 
     customerLookup[(string)reader["code"]] = (string)reader["customerText"]; 
    } 
} 

あなたは、重複コードがある場合は、その後のコード値が辞書に以前のものを上書きすることを認識する必要があります。このような場合に例外がスローされる場合は、customerLookup.Add()を代わりに使用できます。

0

あなただけでなく、間違いなくあなたができるはずです。このコードは、.NETがどのように動作するかについての完全な知識がないことを示しています。

私が示唆しているコードのいくつかは、手元にある「過剰」と見なされるかもしれませんが、いくつかのベストプラクティスを示しています。

Dictionary<string, string> customerLookup = new Dictionary<string, string>(); 
using (var reader = myLookup.ExecuteReader()) 
{ 
    int ordinalCode = reader.GetOrdinal("code"); 
    int ordinalCustomerText = reader.GetOrdinal("customerText"); 
    while (reader.Read()) 
    { 
     //this code assumes the values returned by the reader cannot be null 
     customerLookup.Add(reader.GetString(ordinalCode), reader.GetString(ordinalCustomerText)) 
    } 
} 
関連する問題