我只需要获取查询的第一个值。我该怎么做呢?
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‘在当前上下文
中不存在
发布于 2018-06-04 13:49:38
你也可以试试这个语法...
var key = dict.FirstOrDefault(v => v.Value == "Peter").Key;
编辑:添加代码以便于理解/复制-粘贴...Rextester - http://rextester.com/AIAKRZ95654
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);
}
}
}
更新:请注意,当使用FirstOrDefault()
关键字时,?.key
不是必需的,最坏情况下将返回0
。使用First()
时需要?.key
。由于这个困惑,Flater投票否决了这个答案,并从下面的评论区删除了他的评论。(他可能应该承认并提到这个因素,以便让其他程序员对First()
和FirstOrDefault()
之间的这种细微差别保持警惕。)
发布于 2018-06-04 13:45:28
当字典中可以没有项目时,请使用First或FirstOrDefault:
var keys = (from entry in dict where entry.Value == "Peter" select entry.Key).FirstOrDefault();
发布于 2018-06-04 15:50:58
集合有四个方法,它们都返回集合的一项:
First(condition)
为了得到满足条件的第一个项,如果没有这样的项,此方法将抛出异常。
FirstOrDefault(condition)
为了获取满足条件的第一个项,如果没有这样的项,此方法将返回null。
Single(condition)
用于获取满足条件的唯一项。如果满足条件的项数大于或小于1,则此方法引发异常。
SingleOrDefault(condition)
用于获取满足条件的唯一项。如果满足条件的项数大于1,则此方法引发异常。
https://stackoverflow.com/questions/50673982
复制相似问题