C# 将SiteMapNode移动到列表顶部

C# 将SiteMapNode移动到列表顶部,c#,nodes,sitemapprovider,C#,Nodes,Sitemapprovider,我有System.Web.SiteMapProvider,我使用providerSiteMap.RootNode.ChildNodes 对于RootNode中的childnodes,我希望将最后一个节点移动到顶部(作为第一项) 我要移动最后一个节点N10: ChildNodes: N10, N1, N2, ...N9 我试试这个: var providerSiteMap = GetProviderSiteMap(sRoles); var dSource = n

我有
System.Web.SiteMapProvider
,我使用
providerSiteMap.RootNode.ChildNodes

对于
RootNode
中的childnodes,我希望将最后一个节点移动到顶部(作为第一项)

我要移动最后一个节点N10:

ChildNodes: N10, N1, N2, ...N9 
我试试这个:

        var providerSiteMap = GetProviderSiteMap(sRoles);
        var dSource = new SiteMapDataSource { Provider = providerSiteMap };
        var nodeList = providerSiteMap.GetChildNodes(providerSiteMap.RootNode);

        var listaNodos = new List<SiteMapNode>();
        var item = providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().FirstOrDefault(x => x.Key == "9100");

        providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().ToList().Remove(item);
        providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().ToList().Insert(0, item);


        dSource.DataBind();
        //enlazamos

        TreeView1.DataSource = dSource;
        TreeView1.DataBind();
        var providerSiteMap = GetProviderSiteMap(sRoles);
        var dSource = new SiteMapDataSource { Provider = providerSiteMap };
        var nodeList = providerSiteMap.GetChildNodes(providerSiteMap.RootNode);

        var listaNodos = new List<SiteMapNode>();
        var item = providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().FirstOrDefault(x => x.Key == "9100");

        List<SiteMapNode> children2 = new List<SiteMapNode>(providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>());

        var t = children2.Count;
        children2.Remove(item);
        t = children2.Count;
        children2.Insert(0, item);
        t = children2.Count;

        var nodesChildren = new SiteMapNodeCollection(children2.ToArray());
        providerSiteMap.RootNode.ChildNodes = nodesChildren;

        // refresh ??
        providerSiteMap.GetChildNodes(providerSiteMap.RootNode);
当我尝试执行
providerSiteMap.RootNode.ChildNodes.Remove(项)时,我得到的集合是只读的错误

有什么建议吗?

我尝试一下:

        var providerSiteMap = GetProviderSiteMap(sRoles);
        var dSource = new SiteMapDataSource { Provider = providerSiteMap };
        var nodeList = providerSiteMap.GetChildNodes(providerSiteMap.RootNode);

        var listaNodos = new List<SiteMapNode>();
        var item = providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().FirstOrDefault(x => x.Key == "9100");

        providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().ToList().Remove(item);
        providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().ToList().Insert(0, item);


        dSource.DataBind();
        //enlazamos

        TreeView1.DataSource = dSource;
        TreeView1.DataBind();
        var providerSiteMap = GetProviderSiteMap(sRoles);
        var dSource = new SiteMapDataSource { Provider = providerSiteMap };
        var nodeList = providerSiteMap.GetChildNodes(providerSiteMap.RootNode);

        var listaNodos = new List<SiteMapNode>();
        var item = providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().FirstOrDefault(x => x.Key == "9100");

        List<SiteMapNode> children2 = new List<SiteMapNode>(providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>());

        var t = children2.Count;
        children2.Remove(item);
        t = children2.Count;
        children2.Insert(0, item);
        t = children2.Count;

        var nodesChildren = new SiteMapNodeCollection(children2.ToArray());
        providerSiteMap.RootNode.ChildNodes = nodesChildren;

        // refresh ??
        providerSiteMap.GetChildNodes(providerSiteMap.RootNode);
var providerSiteMap=GetProviderSiteMap(sRoles);
var dSource=new SiteMapDataSource{Provider=providerSiteMap};
var nodeList=providerSiteMap.GetChildNodes(providerSiteMap.RootNode);
var listandos=新列表();
var item=providerSiteMap.RootNode.ChildNodes.Cast().FirstOrDefault(x=>x.Key==“9100”);
List children2=新列表(providerSiteMap.RootNode.ChildNodes.Cast());
var t=儿童2.计数;
儿童2.移除(项目);
t=儿童2.计数;
儿童2.插入(0,项目);
t=儿童2.计数;
var nodesChildren=newsitemapnodecollection(children2.ToArray());
providerSiteMap.RootNode.ChildNodes=NodeChildren;
//刷新??
providerSiteMap.GetChildNodes(providerSiteMap.RootNode);
        var providerSiteMap = GetProviderSiteMap(sRoles);
        var dSource = new SiteMapDataSource { Provider = providerSiteMap };
        var nodeList = providerSiteMap.GetChildNodes(providerSiteMap.RootNode);

        var listaNodos = new List<SiteMapNode>();
        var item = providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().FirstOrDefault(x => x.Key == "9100");

        List<SiteMapNode> children2 = new List<SiteMapNode>(providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>());

        var t = children2.Count;
        children2.Remove(item);
        t = children2.Count;
        children2.Insert(0, item);
        t = children2.Count;

        var nodesChildren = new SiteMapNodeCollection(children2.ToArray());
        providerSiteMap.RootNode.ChildNodes = nodesChildren;

        // refresh ??
        providerSiteMap.GetChildNodes(providerSiteMap.RootNode);