如何检查C# Dictionary中指定键对应的值是否为特定内容?
解决方案
要检查字典中第一个键对应的值是否为"Pancakes",可以根据需求选择以下两种方法:
方法一:已知第一个键的名称
如果已经确定第一个键是"Fiora",直接通过键名访问对应的值判断即可,建议先检查键是否存在避免异常:
using System; using System.Collections.Generic; namespace Demo.Aiman1 { class Program { static void Main(string[] args) { Dictionary<string, string> guestsFoods = new Dictionary<string, string>(); guestsFoods.Add("Fiora", "Pancakes"); guestsFoods.Add("Darius", "Pancakes"); guestsFoods.Add("Mordekaiser", "Apple"); // 检查键"Fiora"存在且对应值为"Pancakes" if (guestsFoods.ContainsKey("Fiora") && guestsFoods["Fiora"] == "Pancakes") { Console.WriteLine("First guest's food is Pancakes"); } } } }
方法二:不确定第一个键的名称(动态取第一个键值对)
如果需要动态获取字典的第一个键值对(从.NET 3.5开始,Dictionary会保留插入顺序),可以使用LINQ的First()方法,注意要引入System.Linq命名空间,同时处理字典为空的情况:
using System; using System.Collections.Generic; using System.Linq; // 引入LINQ命名空间 namespace Demo.Aiman1 { class Program { static void Main(string[] args) { Dictionary<string, string> guestsFoods = new Dictionary<string, string>(); guestsFoods.Add("Fiora", "Pancakes"); guestsFoods.Add("Darius", "Pancakes"); guestsFoods.Add("Mordekaiser", "Apple"); // 先判断字典不为空,再取第一个键值对检查值 if (guestsFoods.Count > 0 && guestsFoods.First().Value == "Pancakes") { Console.WriteLine("First guest's food is Pancakes"); } } } }
注意事项
- Dictionary的插入顺序保留特性从.NET 3.5开始生效,若使用更早版本,遍历顺序不固定,此时"第一个键"的概念不成立。
- 使用
First()时,如果字典为空会抛出InvalidOperationException,所以必须先判断guestsFoods.Count > 0。
内容的提问来源于stack exchange,提问作者Martin Kulev
相关产品推荐
相关产品推荐

