字典包含同一项目中的键和值

本文关键字:键和值 项目 包含同 字典 | 更新日期: 2023-09-27 17:55:22

我需要检查我的字典是否在同一行包含两个值。 例如:

Dictionary<string, string> ServiceLIST = new Dictionary<string, string>();
ServiceLIST.add(ServiceName,ServiceStatus)
//if (ServiceLIST.ContainsKey("testingName") & (ServiceLIST.ContainsKey("testingStatus"))

我如何替换 if 语句来检查"testingName"和"testingStatus"是否都存在于字典中的同一项目上?

字典包含同一项目中的键和值

怎么样:

if(ServiceLIST.ContainsKey("testingName") 
 && ServiceLIST["testingName"] == "testingStatus")

Paqogomez 的解决方案有效,但它需要您遍历字典两次 - 一次用于检查值是否在其中,另一次用于查找它映射到的内容。通常这不是一个大问题,但是如果您的字典很大,或者如果您需要此操作多次工作,那就是浪费。

MaMazav的解决方案也很好,但如前所述,它的可读性较差,并且还需要使用KeyValuePairs(我个人不喜欢)。

我认为最好的解决方案是:

string mappedValue;
if(ServiceLIST.TryGetValue("testingName", out mappedValue) && mappedValue == "testingValue")
{
    ...
}

保持可读性和性能。

这是小提琴,由MaMazav提供:http://dotnetfiddle.net/2UG0QH

此外,不确定这是否是实际的代码示例,但您可能应该使用 C# 编码约定进行变量命名:)

if (ServiceLIST.Contains(new KeyValuePair<string, string>(
    "testingName", "testingStatus")))

你可以使用LINQ

if(ServiceLIST.Any(x => x.Key == "testingName" && x.Value == "testingStatus"))