linq to xml 检查键是否存在?
开发一个从customers.xml 文件读取一些值到UI 的应用程序。
Linq to xml 代码:
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 文件中的任何元素或数据时,我收到错误“字典中不存在给定的键”,
如果只读取该值,如何动态检查字典中是否存在键或者得到下一个值?
Working on a application which reads some values from an customers.xml file to 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;
I am able to get the values into GUI from XMl file by the above code.
My question is when i comment out any element or data from xml file of a particular customer i get the error "the given key is not present in the dictionary"
How do i dynamically check whether a key exists in dictionary if then only read that value or else got to the next value ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您正在寻找
ContainsKey()
或TryGetValue()
方法。You're looking for the
ContainsKey()
orTryGetValue()
methods.检查字典中是否存在键的“正确”方法是使用 ContainsKey 函数。
dictionary.ContainsKey(keyValue);
但是,您可能想问自己为什么键不存在以及它是否应该存在。
The 'proper' way to check whether a key is present in a Dictionary is to use the ContainsKey function.
dictionary.ContainsKey(keyValue);
However, you may want to ask yourself why the key isn't there and whether it should be there.
编辑:
您可以循环访问 Keys 属性集合的键:
您也可以使用 LINQ 来过滤出您需要的内容:
EDIT:
You can loop through keys accessing Keys property collection:
Also you can use LINQ to filter out what you need: