2012-10-23 15 views
5

私はこのようになりますSQLテーブルを持っている:私は、データを読み取るためにSQLデータリーダーを使用しようとしている読むSQL表<文字列、リスト<string[]>>

AAA, Amanda, Anthony 
AAA, Anna, Andrew 
BBB, Boris, Benji 
BBB, Blondie, Bobby 

はその後に結果を挿入しますDictionary<string, List<string[]>>

期待される結果は次のとおりです。

[Key] 
    "AAA" 
[Value] 
    "Amanda", "Anthony" 
    "Anna", "Andrew" 
[Key] 
    "BBB" 
[Value] 
    "Boris", "Benji" 
    "Blondie", "Bobby" 

助けてください:

using (SqlConnection cnn = new SqlConnection("connection")) 
{ 
    using (SqlCommand cmd = new SqlCommand("command", cnn)) 
    { 
     using (SqlDataReader rdr = cmd.ExecuteReader()) 
     { 
     while (rdr.Read()) 
      { 
       ... ? 
      } 
     { 
    { 
} 
+0

特定の質問をする必要があります。 – RBarryYoung

+1

私はあなたが実際にやっているように複数の値を1つの列に入れたいかどうかについて真剣に考えています。通常、あなたがこれをやって後悔するだろう、道路のポイントが来る... –

+0

@RBarryYoung:どういう意味ですか?私は辞書にSQLテーブルからのレコードを挿入するための助けを求めています。なぜ-1? – Administrateur

答えて

0

これに似た何か:多分このような

var dict = new Dictionary<string, List<string[]>>(); 
while (rdr.Read()) 
{ 
    // TODO: extract field1, field2, field3 
    if(dict.ContainsKey(field1)) 
    { 
     // Add the values to the existing list 
     dict[field1].Add(new string [] {field2 , field3}); 
    } 
    else 
    { 
     //Create a new list and set the initial value 
     dict[field1] = new List<string[]> { new string[] { field2 , field3 } }; 
    } 
} 
+0

ありがとうございました... – Administrateur

1

これはかなり簡単だと思います。あなたのデータテーブルを読んで、各行について、あなたの辞書に[key]が存在するかどうか確認してください。そうでない場合は、[値]を含む新しいリストを追加します。それ以外の場合は[値]を[キー]の位置にリストに追加します。

データテーブルを並べ替えると、新しい[キー]ごとに[キー]が変更されるまでリストが累積されてから、[キー]とリストが追加されますあなたの辞書に。

+0

ありがとうございます。 – Administrateur

0

は何か?これは動作するはず

1
while (rdr.Read()) 
{ 
    if (dictionary.ContainsKey((string)rdr["column1"]){ 
     dictionary[(string)rdr["column1"]].Value.Add(new string[]{(string)rdr["column2"], (string)rdr["column3"]}); 
    } else { 
     dictionary.Add((string)rdr["column1"]), new List<string>()); 
     dictionary[(string)rdr["column1"]].Value.Add(new string[]{(string)rdr["column2"], (string)rdr["column3"]}); 
    } 
} 

myDict.Add(rdr["key"].ToString(), rdr["value"].ToString().Split(",").ToList()); 

テストされていないが、それはあなたが正しい方向に軌道に乗る必要があります...。

+0

これは短くて甘いです。 – RinoTom

関連する問題