处理从customers.xml文件中读取某些值到UI的应用程序。
Linq to xml code:
var Settings = (from e in customer.Descendants("appSettings")
from kvpair in e.Elements("Name")
select new
{
Name = kvpair.Attribute("Zip").Value,
Node = kvpair
}).ToDictionary(x => x.Name, y => y);
txtFName.Text==Settings["CustomerA"].Node.attribute("value").Value;
txtLName=Settings["CustomerB"].Node.attribute("value").Value;
我可以通过上面的代码从XMl文件中获取GUI值。
我的问题是当我从特定客户的xml文件中注释掉任何元素或数据时,我得到错误“字典中没有给定的密钥”
如果只读取该值或者获得下一个值,我如何动态检查字典中是否存在密钥?
答案 0 :(得分:4)
您正在寻找ContainsKey()
或TryGetValue()
方法。
答案 1 :(得分:2)
检查字典中是否存在键的“正确”方法是使用ContainsKey函数。 dictionary.ContainsKey(keyValue);
但是,你可能想问问自己为什么关键不在那里以及是否应该在那里。
答案 2 :(得分:1)
if (Settings.ContainsKey("CustomerA"))
{
txtLName.Text = Settings["CustomerA"].Node.attribute("value").Value;
}
编辑:
您可以循环访问Keys属性集合的键:
foreach (var key in Settings.Keys)
{
// ..
}
您也可以使用LINQ过滤掉您需要的内容:
IList<string> filteredKeys = new List<string> { "A", "B" };
Settings.Where(kv => filteredKeys.Contains(kv.Key));