如何从C#中的字典中检索第一行?

时间:2013-03-22 02:39:01

标签: c# asp.net

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

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

5 个答案:

答案 0 :(得分:7)

您可以使用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条目的值。

编辑2: 明确使用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
}

答案 1 :(得分:5)

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

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

答案 2 :(得分:3)

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

var firstHead = headINFO.First();

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

var firstHead = headINFO.FirstOrDefault();

如果您想循环浏览字典中的所有项目,请尝试以下操作:

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

答案 3 :(得分:2)

试试这段代码。

headINFO.FirstOrDefault();

答案 4 :(得分:-1)

试试这个:

    int c=0;

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