【问题标题】:C# Dictionary print list values by positionC# Dictionary 按位置打印列表值
【发布时间】:2017-09-27 15:54:02
【问题描述】:

从这个例子:https://stackoverflow.com/a/27034916/1312879

我有这种字典

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

示例打印“fijo”、“Frigy”、“lijo”、“liji”、“vimal”、“vilma”

如何打印“fijo”、“lijo”、“vimal”、“Frigy”、“liji”、“vilma”,我的意思是每个列表的所有 [0] 位置、[1] 位置等等开

【问题讨论】:

  • 你的数据例子不是很清楚,我只能从最后一句话猜出你的意思。无论如何,到目前为止,您尝试了哪些不起作用的方法?它是如何失败的?如果列表有不同的长度会发生什么?

标签: c# linq dictionary


【解决方案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]);
    }
}

【讨论】:

    【解决方案2】:

    给你:

    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]);
        }
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多