C# 将SQL表读入字典<;字符串,列表<;字符串[]>&燃气轮机;
我有一个如下所示的SQL表:C# 将SQL表读入字典<;字符串,列表<;字符串[]>&燃气轮机;,c#,.net,vb.net,list,data-dictionary,C#,.net,Vb.net,List,Data Dictionary,我有一个如下所示的SQL表: AAA, Amanda, Anthony AAA, Anna, Andrew BBB, Boris, Benji BBB, Blondie, Bobby 我正在尝试使用SQL数据读取器读取数据,然后将结果插入到字典中 预期结果是: [Key] "AAA" [Value] "Amanda", "Anthony" "Anna", "Andrew" [Key] "BBB" [Value] "Boris", "Benji" "Blond
AAA, Amanda, Anthony
AAA, Anna, Andrew
BBB, Boris, Benji
BBB, Blondie, Bobby
我正在尝试使用SQL数据读取器读取数据,然后将结果插入到字典中
预期结果是:
[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())
{
... ?
}
{
{
}
我认为这很简单。通读您的数据表,对于每一行,检查字典中是否存在[key]。如果没有,则添加一个包含您的[值]的新列表;否则,将[value]添加到位置[key]处的列表中
如果您对数据表进行排序,您可以使用一种经典的控制中断技术来加快排序速度——对于每个新的[key],开始累积一个列表,直到[key]发生变化,然后将[key]和列表添加到字典中。类似于此:
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 } };
}
}
var dict=newdictionary();
while(rdr.Read())
{
//TODO:提取字段1、字段2、字段3
if(dict.ContainsKey(字段1))
{
//将这些值添加到现有列表中
dict[field1].Add(新字符串[]{field2,field3});
}
其他的
{
//创建新列表并设置初始值
dict[field1]=新列表{newstring[]{field2,field3};
}
}
可能是这样的吧
myDict.Add(rdr["key"].ToString(), rdr["value"].ToString().Split(",").ToList());
未经测试,但它应该让您朝着正确的方向前进…while(rdr.Read())
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"]});
}
}
{
if(dictionary.ContainsKey((string)rdr[“column1”]){
字典[(字符串)rdr[“column1”]].Value.Add(新字符串[]{(字符串)rdr[“column2”],(字符串)rdr[“column3”]});
}否则{
Add((string)rdr[“column1”]),newlist();
字典[(字符串)rdr[“column1”]].Value.Add(新字符串[]{(字符串)rdr[“column2”],(字符串)rdr[“column3”]});
}
}
这应该是可行的。您需要问一个特定的问题。我会认真考虑您是否真的希望像您看起来那样将多个值放在一列中。通常情况下,你会后悔做了这件事……@rbaryyoung:你是什么意思?我请求帮助将SQL表中的记录插入字典。为什么是-1?@AbeMiessler:“通常情况下,当你想要将你创建的隐含亲子关系视为实际的亲子关系时,你会后悔这样做……”。带有示例的答案太大,无法包含在评论中。这可能是一个很好的问题。。。