Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从查询c中获得有限数量的输出_C# - Fatal编程技术网

C# 如何从查询c中获得有限数量的输出

C# 如何从查询c中获得有限数量的输出,c#,C#,我只需要获取查询的第一个值。我该怎么做 Dictionary<int, string> dict = new Dictionary<int, string>(); dict.Add(1, "Jack"); dict.Add(2, "Peter"); dict.Add(3, "Chris"); dict.Add(4, "Peter"); var keys = from entry in dict where entry.Value == "Peter" select e

我只需要获取查询的第一个值。我该怎么做

Dictionary<int, string> dict = new Dictionary<int, string>();

dict.Add(1, "Jack");
dict.Add(2, "Peter");
dict.Add(3, "Chris");
dict.Add(4, "Peter");

var keys = from entry in dict where entry.Value == "Peter" select entry.Key limit 1;
如果我使用limit,我会得到一个错误。那么,还有什么其他方法可以限制输出,或者如何单独从查询中获得第一个结果呢

错误CS0103当前上下文中不存在名称“limit”


当字典中可能没有项时,请使用First或FirstOrDefault:

var keys = (from entry in dict where entry.Value == "Peter" select entry.Key).FirstOrDefault();

你也可以试试这个语法

var key = dict.FirstOrDefault(v => v.Value == "Peter").Key;
编辑:添加代码以便于理解/复制粘贴。。。 雷克斯测试仪-


更新:使用FirstOrDefault关键字时请注意,?键不是必需的,最坏情况下它将返回0。首次使用时需要?键。由于这种混乱,Flater否决了这个答案,并从下面的评论部分删除了他的评论。他可能应该承认并提到这一因素,以便让其他程序员对First和First之间的细微差别有一个警觉的信号。默认集合有四种方法,它们都返回集合的一项:

第一条件 对于获取满足条件的第一个项,如果没有这样的项,此方法将抛出异常

第一预设条件 对于获取满足条件的第一个项,如果没有这样的项,此方法将返回null

单一条件 用于获取唯一满足条件的项。如果满足条件的项数大于或小于1,此方法将引发异常

SingleOrDefaultcondition
用于获取唯一满足条件的项。如果满足条件的项数大于1,此方法将引发异常。

使用first或TACK.dict.Wherex=>x.Value==Peter.Selectx=>x.Key.TAKE1问问题时,如果出现错误,最好将错误包含在问题中。@SlavaUtesinov:可以折叠为dict.Firstx=>x.Value==Peter.Key。这里的关键区别在于,您的版本呈现一个包含一项的列表,而不是一项本身。@Flater使用First可能会遇到异常,除非您选择?.key…使用First时,这不适用于FirstOrDefault。@Flater可能是rextester在我尝试此操作时返回了默认int。你有没有在rexster中测试过这个问题?@Flater这是“First”和“FirstOrDefault”之间的区别,在你的rexster中,你使用了前者,我在上面的答案和rexster中使用了后者。PS:我无法格式化评论中的关键词,因为我正在使用移动设备。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {

            Dictionary<int, string> dict = new Dictionary<int, string>();

            dict.Add(1, "Jack");
            dict.Add(2, "Peter");
            dict.Add(3, "Chris");
            dict.Add(4, "Peter");

            var key = dict.FirstOrDefault(v => v.Value == "Peter").Key;

            Console.WriteLine(key);
        }
    }
}