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@JoelFan
ContainsKey
+
[]
TryGetValue
相比,也会对性能产生影响。在我的例子中,“链接”是一个ILookup。在这种情况下,我可以使用Contains()?或out var吗?那么您不必假设任何东西:)在我的情况下,“links”是一个ILookup。在这种情况下,我可以使用Contains()?@Dolla,然后您可以使用
Contains
而不是
ContainsKey
,但是
TryGetValue
不可用。这不是一个问题,因为
链接[publication.PublicationId]
将返回一个空的可枚举项,以防在查找中不存在该键,使用Linq的
Any
可以很容易地检测到该空值。