我有一个字典(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指令或汇编引用?)
任何帮助将不胜感激
答案 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。