我这样做是为了查找字典中的特定键,我想找到相同的行id_d,它真的很适用于真正存在的键,但是当键没有&时它会抛出异常#39; t匹配参数值中的查询条件。
if(sentences.TryGetvalue(values = (from keys in sentences where keys.key.id_d == rows.id_d selesck keys.Key).First(), out listOf))
你知道我怎么能解决这个问题,我的意思是,只是从值中避免那些空引用并继续而不被异常停止。
一个例子是这样的:
if(sentences.TryGetValue(values = (from keys in sentences where keys.key.id_d == rows.id_d selesck keys.Key).First(), out listOf))
{
//do whatever
}
else
{
//if the 'value' query doesn't match the criteria, don't do anything
}
答案 0 :(得分:0)
如果TKey
实际上不是您要用来查找值的关键字,那么您还在使用字典的原因尚不清楚 - 您错过了常量时间查找。我只能假设你在其他地方使用它。
如果要根据键谓词查找值,只需选择值(而不是键)并返回FirstOrDefault
- TryGetValue
不是必需的。在未找到匹配项的情况下,这将返回默认值(可能null
,除非TValue
是值类型):
var result =
(from pair in sentences
where pair.Key.id_d == rows.id_d
select pair.Value).FirstOrDefault();
如果您在整个过程中使用方法语法,这可能会更好:
var result = sentences
.Where(x => x.Key == rows.id_d)
.Select(x => x.Value)
.FirstOrDefault();