【问题标题】:How to retrieve first row from dictionary in C#?如何从 C# 中的字典中检索第一行?
【发布时间】:2013-03-11 19:20:29
【问题描述】:

如何从该字典中检索第一行。我放了大约 15 条记录。

Dictionary<string, Tuple<string, string>> headINFO = 
                                   new Dictionary<string, Tuple<string, string>> { };

【问题讨论】:

标签: c# asp.net


【解决方案1】:

您可以使用headINFO.First(),但除非您知道headINFO 中始终至少有一个条目,否则我建议您使用headINFO.FirstOrDefault()

有关两个可用here 之间差异的更多信息。

编辑: 添加简单示例

这是一个关于如何使用FirstOrDefault()的简单示例

var info = headINFO.FirstOrDefault().Value;
Console.WriteLine(info.Item1); // Prints Tuple item1
Console.WriteLine(info.Item2); // Prints Tuple item2

如果您想打印多个项目,您可以使用Take(x)。在这种情况下,我们将遍历三个字典项,但您可以轻松修改数字以获取更多项。

foreach (var info in headINFO.Take(3))
{
    Console.WriteLine(info.Value.Item1);
    Console.WriteLine(info.Value.Item2);
}

您还应该记住,上述foreach 不允许您直接修改Dictionary 条目的值。

Edit2: 阐明 First() 的用法并添加干净的 foreach 示例

请记住,虽然 First()FirstOrDefault() 会为您提供单个项目,但它不能保证它会是第一个添加的项目。

另外,如果您只是想遍历所有项目,您可以删除上述 foreach 循环中的 Take(3)

foreach (var info in headINFO)
{
    Console.WriteLine(info.Key);          // Print Dictionary Key
    Console.WriteLine(info.Value.Item1);  // Prints Turple Value 1
    Console.WriteLine(info.Value.Item2);  // Prints Turple Value 2
}

【讨论】:

  • 我的字典中有大约 15 行。从那我只想分别检索每一行并将其分配给不同的局部变量......例如)第一个字符串ID,第二个字符串头,第三个字符串内容......所以现在第一行我想将它分配给这三个变量。 ..第二行的方式相同,依此类推...
【解决方案2】:

试试这个代码。

headINFO.FirstOrDefault();

【讨论】:

    【解决方案3】:

    试试这个:

        int c=0;
    
        foreach(var item in myDictionary)
        {
             c++;
             if(c==1)
             {
                 myFirstVar = item.Value;
             }
             else if(c==2)
             {
                 mySecondVar = item.Value;
             }
              ......
        }
    

    【讨论】:

      【解决方案4】:

      最简单的方法就是使用Linq的First扩展方法:

      var firstHead = headINFO.First();
      

      或者如果您想更安全,如果字典为空,FirstOrDefault 方法将返回 null

      var firstHead = headINFO.FirstOrDefault();
      

      如果你想遍历字典中的所有项目,试试这个:

      foreach(var head in headINFO)
      {
          ...
      }
      

      【讨论】:

      • @vimal 你可以做.Skip(1).FirstOrDefault(),但听起来你做错了。你能详细说明你想做什么吗?
      • 我的字典中有大约 15 行。从那我只想分别检索每一行并将其分配给不同的局部变量......例如)第一个字符串ID,第二个字符串头,第三个字符串内容......所以现在第一行我想将它分配给这三个变量。 ..第二行的方式相同,依此类推...
      • 无论你想做什么,但听起来都不好。
      • @vimal 你可能想使用foreach 循环,或者更好的是,你可能想重新考虑使用字典——无论你在做什么,可能有更好的方法它。
      【解决方案5】:

      字典是无序的,因此无法检索您插入的第一个键值对。

      您可以通过调用 LINQ .First() 方法检索一个项。

      【讨论】:

      • 嗯...我总是使用 FirstOrDefault(),但我认为这不会有很大的不同
      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多