linq to xml 检查键是否存在?

发布于 2025-01-05 18:51:50 字数 789 浏览 1 评论 0原文

开发一个从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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦里梦着梦中梦 2025-01-12 18:51:50

您正在寻找 ContainsKey()TryGetValue() 方法。

You're looking for the ContainsKey() or TryGetValue() methods.

岁月打碎记忆 2025-01-12 18:51:50

检查字典中是否存在键的“正确”方法是使用 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.

也只是曾经 2025-01-12 18:51:50
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));
if (Settings.ContainsKey("CustomerA"))
{
   txtLName.Text = Settings["CustomerA"].Node.attribute("value").Value;
}

EDIT:

You can loop through keys accessing Keys property collection:

foreach (var key in Settings.Keys)
{
   // ..
}

Also you can use LINQ to filter out what you need:

IList<string> filteredKeys = new List<string> { "A", "B" };
Settings.Where(kv => filteredKeys.Contains(kv.Key));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文