C#字典按位置打印列表值

时间:2017-09-27 15:54:02

标签: c# linq dictionary

从此示例中:https://stackoverflow.com/a/27034916/1312879

我有这种字典

Dictionary<int, List<string>> fileList = new Dictionary<int, List<string>>();

示例打印&#34; fijo&#34;,&#34; Frigy&#34;,&#34; lijo&#34;,&#34; liji&#34;,&#34; vimal&#34; ,&#34; vilma&#34;

我如何打印&#34; fijo&#34;,&#34; lijo&#34;,&#34; vimal&#34;,&#34; Frigy&#34;,&#34; liji&#34 ;,&#34; vilma&#34;,我的意思是每个列表的所有[0]位置,[1]位置等等

2 个答案:

答案 0 :(得分:1)

你可以像你说的那样编写代码:

foreach (var kvp in fileList)
{
    Console.WriteLine (kvp.Value[0]);
}
foreach (var kvp in fileList)
{
    Console.WriteLine (kvp.Value[1]);
}

如果内部列表中有更多项目,您可能希望使用循环,假设它们都具有相同的长度:

for (int i = 0; i < fileList.First().Value.Count; i++)
{
    foreach (var kvp in fileList)
    {
        Console.WriteLine (kvp.Value[i]);
    }
}

答案 1 :(得分:0)

你走了:

for(int i=0; i < fileList.Values.Max(v=> v==null ? 0 : v.Length); i++)
{
    foreach(var keyValuePair in fileList)
    {
        if(kvp.Value == null || i >= kvp.Value.Length)
            continue;
        Console.WriteLine(kvp.Value[i]);
    }
}

但是,我想知道在基于行创建时以柱状方式遍历数据结构的原因(反之亦然)。您可能最好使用可以为所有用例提供服务的不同数据结构。