字典<string,double =“”>从值获取键(错误)

时间:2017-11-14 20:17:01

标签: c# dictionary contains

我有一个字典(Dictionary),我想从(值)得到键值,例如:

假设dic包含:

"som": 12.2345
"roy": 2.677
"toy": 1.67445666777

我想从搜索2.677

获取roy密钥

我试过了:

var keys = from entry in dic
                           where entry.Value == 2.677
                           select entry.Key;

还有:

var myKey =dic.FirstOrDefault(x => x.Value.Contains(2.677)).Key;

在每种情况下我都得到了同样的错误: 错误:'double'不包含'Value'的定义,并且没有扩展方法'Value'可以找到接受类型'double'的第一个参数(你是否缺少using指令或汇编引用?)

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:3)

您不需要Contains。试试这个:

var myKey = dic.FirstOrDefault(item => item.Value == 2.677).Key;

请注意FirstOrDefault方法会返回完全第一个键或null,如果找不到与表达式匹配的内容。许多键可以具有相同的Value属性。

答案 1 :(得分:0)

你可以试试这个:

string key = dic.FirstOrDefault(x => x.Value == 2.677)?.Key;

请注意,FirstOrDefault()如果没有与您的条件匹配则返回null,因此请使用null条件运算符(?.)以确保不引发空引用异常。这只是意味着如果找不到匹配的值,则键将为null。