我的字典包含一个包含字符串列表的键。
Dictionary<string, List<string>> keyValueListDict=new Dictionary <string,List<string>>();
List<string>valueList = new List<string>();
我的keyValueListDict
充满了唯一键和值列表。对于每个字典条目,我需要输出密钥,然后输出列表的内容(值)。
更新:我认为问题来自输入值 所以我从我的数据库中检索一个对象
foreach(object)
{
key=object.key;
foreach(string value in object.othercomponent)
{
list.add(value);
}
keyValueListDict.add(key,list);
list.clear();
}
每次清除列表时,列表中值的计数重置为0,这样我就可以填充下一个对象,但我无法弄清楚如何避免这个
答案 0 :(得分:2)
试试这个:
var valueList = keyValueListDict.SelectMany(kvp => kvp.Value).ToList();
答案 1 :(得分:0)
这是迭代字典的基本方法:
var keyValueListDict = new Dictionary<string, List<string>>() {
{"fookey", {"foo", "bar", "baz"}},
{"barkey", {"bar", "baz", "foo"}},
{"bazkey", {"baz", "foo", "bar"}}
};
foreach(var entry in keyValueListDict) {
string key = entry.Key;
List<string> values = entry.Value;
//Console.WriteLine(key + " => " + values);
//Console.WriteLine(key + " => [" + string.Join(", ", values) + "]");
}
答案 2 :(得分:0)
尝试这样的方法来创建一个字典输入键的输出字符串,然后是组合值。
public string GetOutputString(KeyValuePair<string, List<string>> kvp)
{
string separator = ", "; //you can change this if needed (maybe a newline?)
string outputString = kvp.Key + " " + String.Join(separator, kvp.Value);
return outputString;
}
如果您只拥有密钥(而不是整个KeyValuePair
),则可以使用类似的内容从字典中创建副本(另请参阅this question关于直接从KeyValuePair
获取字典)
var kvp = new KeyValuePair<string, List<string>>(key, keyValueListDict[key]);
如果您需要输出整个字典,可以执行以下操作:
foreach (var kvp in keyValueListDict)
{
string output = GetOutputString(kvp);
//print output, write to file etc.
}
答案 3 :(得分:0)
试试这个:
foreach (var key in dictionary.Keys)
{
var tmp = string.Empty;
foreach (var value in dictionary[key])
{
tmp +=value """";
System.Console.WriteLine(tmp );
}
}
答案 4 :(得分:0)
我今天遇到了这个问题,我不喜欢被迫更改数据结构,我真的很想维护列表。这对我有用。
var reportTabGridItems = ExpectedReportTabsWithReportItems.Where(x => x.Key == reportTabName).Select(x => x.Value).FirstOrDefault();
我只想要一行,因此我将FirstOrDefault()拖到最后,因为最后一次选择将带回列表列表,我只想要一个(如果找不到则为null)。
希望这对您有所帮助。