C# 字典对象的行式迭代

C# 字典对象的行式迭代,c#,data-structures,C#,Data Structures,我有一个字典对象,如: Dictionary<string, HashSet<int>> dict = new Dictionary<string, HashSet<int>>(); dict.Add("foo", new HashSet<int>() { 15,12,16,18}); dict.Add("boo", new HashSet<int>() { 16,47,45,21 });

我有一个字典对象,如:

Dictionary<string, HashSet<int>> dict = new Dictionary<string, HashSet<int>>();
        dict.Add("foo", new HashSet<int>() { 15,12,16,18});
        dict.Add("boo", new HashSet<int>() { 16,47,45,21 });

谁能帮我做到这一点。谢谢。

首先获取键:循环遍历所有字典键,然后获取值,例如:

foreach(var v in dict.Keys)
{
Console.WriteLine(dict[v]);
}

希望这有帮助。

这里的结果是您的字典,writer是streamwriter的对象

            int keyCount = results.Keys.Count;
            writer.WriteLine("<table border='1'>");
            writer.WriteLine("<tr>");
            for (int i = 0; i < keyCount; i++)
            {
                writer.WriteLine("<th>" + results.Keys.ToArray()[i] + "</th>");
            }
            writer.WriteLine("</tr>");

            int valueCount = results.Values.ToArray()[0].Count;
            for (int j = 0; j < valueCount; j++)
            {
                writer.WriteLine("<tr>");
                for (int i = 0; i < keyCount; i++)
                {
                    writer.WriteLine("<td>" + results.Values.ToArray()[i].ToArray()[j] + "</td>");
                }
                writer.WriteLine("</tr>");
            }
            writer.WriteLine("</table>");
int keyCount=results.Keys.Count;
writer.WriteLine(“”);
writer.WriteLine(“”);
对于(int i=0;i
您应该使用
transpose()
扩展并测试以下代码:

Dictionary<string, HashSet<int>> dict = new Dictionary<string, HashSet<int>>();
dict.Add("foo", new HashSet<int>() { 15, 12, 16, 18 });
dict.Add("boo", new HashSet<int>() { 16, 47, 45, 21 });

var query = dict.Select(entry => entry.Value.Select(value => value.ToString()))
                .Transpose();

foreach (var key in dict.Keys)
{
    Console.Write(String.Format("{0,-5}", key));
}
Console.WriteLine();

foreach (var row in query)
{
    foreach (var item in row)
    {
        Console.Write(String.Format("{0,-5}", item));
    }
    Console.WriteLine();
}
Console.ReadKey();
Dictionary dict=new Dictionary();
dict.Add(“foo”,新的HashSet(){15,12,16,18});
dict.Add(“boo”,新的HashSet(){16,47,45,21});
var query=dict.Select(entry=>entry.Value.Select(Value=>Value.ToString())
.Transpose();
foreach(dict.Keys中的var键)
{
Write(String.Format(“{0,-5}”,key));
}
Console.WriteLine();
foreach(查询中的变量行)
{
foreach(行中的var项目)
{
Write(String.Format(“{0,-5}”,item));
}
Console.WriteLine();
}
Console.ReadKey();

家庭作业!!你需要学习控制台类。此处->[]这将为您提供更多想法->[]您是否知道
字典
哈希集
都不能保证保留其元素的顺序?你的问题/代码似乎假设他们会这样做。ToArray呼叫的数量太多了。每次调用都是从项创建一个新数组。对于一本大词典来说,这将是非常低效的。
Dictionary<string, HashSet<int>> dict = new Dictionary<string, HashSet<int>>();
dict.Add("foo", new HashSet<int>() { 15, 12, 16, 18 });
dict.Add("boo", new HashSet<int>() { 16, 47, 45, 21 });

var query = dict.Select(entry => entry.Value.Select(value => value.ToString()))
                .Transpose();

foreach (var key in dict.Keys)
{
    Console.Write(String.Format("{0,-5}", key));
}
Console.WriteLine();

foreach (var row in query)
{
    foreach (var item in row)
    {
        Console.Write(String.Format("{0,-5}", item));
    }
    Console.WriteLine();
}
Console.ReadKey();