我有一个如下所示的SQL表:
AAA, Amanda, Anthony
AAA, Anna, Andrew
BBB, Boris, Benji
BBB, Blondie, Bobby
我正在尝试使用SQL数据读取器读取数据,然后将结果插入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 :(得分:1)
我认为这非常简单。仔细阅读数据表,并检查每一行,查看字典中是否存在[key]。如果没有,请添加一个包含[value]的新列表;否则,将[value]添加到位置[key]的列表中。
如果对数据表进行排序,可以使用经典的控制中断技术加快速度 - 对于每个新的[key],开始累积List直到[key]更改,然后将[key]和List添加到你的字典。
答案 1 :(得分: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"]});
}
}
这应该有用。
答案 2 :(得分: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 } };
}
}
答案 3 :(得分:0)
这样的事可能吗?
myDict.Add(rdr["key"].ToString(), rdr["value"].ToString().Split(",").ToList());
未经测试,但它应该让你朝着正确的方向前进......