gpt4 book ai didi

c# - 序列不包含匹配元素 - 使用 LINQ 返回匹配自定义属性的 SiteMapNode

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:04 24 4
gpt4 key购买 nike

我有一个使用 XML 格式的 siteMapNode 元素的 Web.sitemap 文件。我已经为每个标签添加了自定义属性。我正在尝试提取自定义属性 id 的值。

我想在 SiteMapNodeCollection 中找到与自定义属性 id 匹配的单个 siteMapNode。我可以使用 foreach 循环实现此目的,但我想使用 LINQ 使其变得简短而有趣。

--不起作用--函数如下:

private SiteMapNode FindNodeById(SiteMapNodeCollection nodes, int siteMapNodeId)
{
return nodes
.Cast<SiteMapNode>()
.First(node => node["id"] == Convert.ToString(siteMapNodeId));
}

但是,我收到 InvalidOperationException => 序列不包含匹配元素。如果我从自定义属性切换到默认 .NET 属性,例如 URL(或标题),我可以毫无问题地取回节点。例如,对于 title 属性设置为 'Test' 的节点,此语句没有问题:

--作品--

    private SiteMapNode FindNodeById(SiteMapNodeCollection nodes, int siteMapNodeId)
{
return nodes
.Cast<SiteMapNode>()
.First(node => node.title == "Test");
}

任何人都可以指出我缺少的正确方向,以便在 .First lambda 表达式中匹配自定义属性值吗?

感谢任何帮助。

周末愉快!

克雷格

最佳答案

将 First 替换为 FirstOrDefault。但如果它崩溃了,则意味着没有满足条件的元素,因此结果将为 null。

关于c# - 序列不包含匹配元素 - 使用 LINQ 返回匹配自定义属性的 SiteMapNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9036029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com