C# 验证是否存在字典密钥
我有这个代码片段,在访问它之前我需要检查字典 在尝试访问密钥之前,如何验证密钥的存在C# 验证是否存在字典密钥,c#,.net,dictionary,C#,.net,Dictionary,我有这个代码片段,在访问它之前我需要检查字典 在尝试访问密钥之前,如何验证密钥的存在 foreach (var publication in publications) { var publicationLinks = links[publication.PublicationId]; var litigationLink = publicationLinks.FirstOrDefault(x =>
foreach (var publication in publications)
{
var publicationLinks = links[publication.PublicationId];
var litigationLink = publicationLinks.FirstOrDefault(x => x.ProcessoId.HasValue);
if (litigationLink != null)
{
litigationLinks[publication.PublicationId] = litigationLink.ProcessoId.Value;
continue;
}
var contactLink = publicationLinks.FirstOrDefault(x => x.ContatoId.HasValue);
if (contactLink != null)
{
contactsLinks[publication.PublicationId] = contactLink.ContatoId.Value;
}
}
您可以使用该方法或尝试检索与键关联的值:
if (links.TryGetValue(publication.PublicationId, out LinkCollection links))
{
...
}
(假设
links
是一个Dictionary
)使用ContainsKey()方法。我更喜欢TryGetValue而不是ContainsKey。ContainsKey让你重复一些东西。最后看起来像是什么东西PHP@JoelFanContainsKey
+[]
与TryGetValue
相比,也会对性能产生影响。在我的例子中,“链接”是一个ILookup。在这种情况下,我可以使用Contains()?或out var吗?那么您不必假设任何东西:)在我的情况下,“links”是一个ILookup。在这种情况下,我可以使用Contains()?@Dolla,然后您可以使用Contains
而不是ContainsKey
,但是TryGetValue
不可用。这不是一个问题,因为链接[publication.PublicationId]
将返回一个空的可枚举项,以防在查找中不存在该键,使用Linq的Any
可以很容易地检测到该空值。