【发布时间】:2014-07-24 20:49:41
【问题描述】:
我有字典,几乎没有像这样存储的元素
Dictionary<string, string> dService = new Dictionary<string, string>();
dService.Add("UPS Express Plus", "001");
dService.Add("UPS Express Plus", "054");
dService.Add("UPS Express", "007");
dService.Add("UPS Express Saver", "065");
dService.Add("UPS Expedited", "008");
dService.Add("UPS Express Plus", "001");
这样我试图根据值获取密钥
dService.SingleOrDefault(x => x.Value == ("001")).Key
此代码抛出错误。我搜索谷歌并得到解决方案,人们说不要使用SingleOrDefault() 而不是使用FirstOrDefault()
但我没有很好的解释为什么&当SingleOrDefault()抛出错误?我应该假设字典存储多个值这就是SingleOrDefault() 不起作用的原因吗?
寻找解释何时为什么和何时SingleOrDefault() 抛出错误....请指导我示例情况。谢谢
【问题讨论】:
-
这不会抛出异常。
-
"why & when
SingleOrDefault()throw error" - 根据documentation: [SingleOrDefault] 返回序列的唯一元素,如果序列为空则返回默认值; 如果序列中有多个元素,此方法将引发异常。 -
此代码抛出错误。什么错误?这对我来说没有任何异常。可能例外在其他地方..
-
您没有提供Minimal, Complete, and Verifiable example。我敢打赌,您的真实字典至少包含两个 KeyValuePair,其值为
"001"。
标签: c# linq dictionary