我有一个 Web.sitemap 文件,使用siteMapNode
XML 中的元素。我已为每个标签添加了自定义属性。我正在尝试提取自定义属性的值id
.
我想找一个单身siteMapNode
in the SiteMapNodeCollection
与自定义属性匹配id
。我能够使用foreach
循环,但我想使用 LINQ 使其变得简短而有趣。
--不起作用--
函数如下:
private SiteMapNode FindNodeById(SiteMapNodeCollection nodes, int siteMapNodeId)
{
return nodes
.Cast<SiteMapNode>()
.First(node => node["id"] == Convert.ToString(siteMapNodeId));
}
但是,我收到 InvalidOperationException =>Sequence contains no matching element
。如果我从自定义属性切换到默认 .NET 属性,例如 URL(或标题),我可以毫无问题地恢复节点。
例如,对于具有以下条件的节点,此语句不会出现问题:title
设置为“测试”的属性:
- 作品 -
private SiteMapNode FindNodeById(SiteMapNodeCollection nodes, int siteMapNodeId)
{
return nodes
.Cast<SiteMapNode>()
.First(node => node.title == "Test");
}
任何人都可以指出我所缺少的正确方向,以便自定义属性值在.First
拉姆达表达式?
我很感激任何帮助。
周末愉快!
Craig
将 First 替换为 FirstOrDefault。但如果崩溃则意味着没有满足条件的元素,因此结果将为 null。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)