使用 LINQ 检索与自定义属性匹配的 SiteMapNode
我是 LINQ 新手。我有一个带有自定义属性的普通 siteMap XML 文档。这些属性之一是: id
我想使用 LINQ 检索与自定义属性 (id) 的值匹配的单个节点。
在
我对 LINQ 的尝试如下所示:
private SiteMapNode FindNodeById(SiteMapNodeCollection nodes, int siteMapNodeId)
{
var pageNode = from SiteMapNode node in nodes.Cast<SiteMapNode>()
where node["id"] == Convert.ToString(siteMapNodeId)
select node;
return (SiteMapNode)pageNode;
}
调试期间,pageNode 被分配为:
{System.Linq.Enumerable.WhereEnumerableIterator<System.Web.SiteMapNode>}
在返回语句上抛出 InvalidCastException:
Unable to cast object of type 'WhereEnumerableIterator`1[System.Web.SiteMapNode]' to type 'System.Web.SiteMapNode'.
感谢任何帮助! :)
编辑:我在这里以更清晰的方式重新发布了这个问题: 重新措辞的问题
感谢 Stefan 让我走上了正确的道路!
I am new to LINQ. I have an ordinary siteMap XML document with custom attributes. One of these attributes is: id
I would like to use LINQ to retrieve a single node matching the value of the custom attribute (id).
etc.
My attempt at the LINQ looks like this:
private SiteMapNode FindNodeById(SiteMapNodeCollection nodes, int siteMapNodeId)
{
var pageNode = from SiteMapNode node in nodes.Cast<SiteMapNode>()
where node["id"] == Convert.ToString(siteMapNodeId)
select node;
return (SiteMapNode)pageNode;
}
During debugging, pageNode becomes assigned with:
{System.Linq.Enumerable.WhereEnumerableIterator<System.Web.SiteMapNode>}
And on the return statement an InvalidCastException is thrown:
Unable to cast object of type 'WhereEnumerableIterator`1[System.Web.SiteMapNode]' to type 'System.Web.SiteMapNode'.
Any help is appreciated! :)
EDIT: I've re-posted this question in a clearer manner here: Re-worded Question
Thanks to Stefan for putting me on the right track!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您尝试将
IEnumerable
转换为SiteMapNode
。使用First
过滤并返回一个节点:You try to cast a
IEnumerable<SiteMapNode>
to aSiteMapNode
. UseFirst
to filter and return one node:pageNode
是节点的序列。您想要调用 First() 来获取序列中的第一项。
pageNode
is a sequence of nodes.You want to call
First()
to get the first item in the sequence.