C# 遍历集合并在列表中添加项<;T>;

C# 遍历集合并在列表中添加项<;T>;,c#,list,class,collections,C#,List,Class,Collections,我有以下课程:- public class SiteMapSection { public string sectionUrl { get; set; } public List<SiteMapSubSection> subSection { get; set; } } public class SiteMapSubSection { public string subSectionUrl { get; set; } public List<S

我有以下课程:-

public class SiteMapSection
{
    public string sectionUrl { get; set; }
    public List<SiteMapSubSection> subSection { get; set; }
}

public class SiteMapSubSection
{
    public string subSectionUrl { get; set; }
    public List<SiteMapArticle> article { get; set; }
}

public class SiteMapArticle
{
    public string url { get; set; }
}
如何遍历集合并在List siteMapSection中添加项

更新的代码,这也不起作用,我只看到siteMapSection.Add(sms)项已添加,但其他嵌套项仍然为空

        List<SiteMapSection> siteMapSection = new List<SiteMapSection>();
        SectionArticle sa = new SectionArticle();

        foreach (BE.Section section in Sections.Find(websiteId, parentSectionId))
        {
            int sectionId = section.Id;
            var sms = new SiteMapSection();
            sms.sectionUrl = Sections.VirtualPath(section) + ".aspx";

            var _subsections = new List<SiteMapSubSection>();
            foreach (BE.Section subsection in Sections.Find(websiteId, sectionId))
            {
                int subSectionId = subsection.Id;
                var smss = new SiteMapSubSection();
                smss.subSectionUrl = Sections.VirtualPath(subsection) + ".aspx";

                var articles = sa.GetArticlesForSection(websiteId, subSectionId, 10);
                var _articles = new List<SiteMapArticle>();
                foreach (var article in articles)
                {
                    var sma = new SiteMapArticle();
                    sma.url = article.Code + ".aspx";
                    _articles.Add(sma);
                }
                _subsections.Add(smss);
            }
            siteMapSection.Add(sms);
        }
List siteMapSection=new List();
SectionArticle sa=新SectionArticle();
foreach(BE.Section in Sections.Find(websiteId,parentSectionId))
{
int sectionId=section.Id;
var sms=新建SiteMapSection();
sms.sectionUrl=Sections.VirtualPath(section)+“.aspx”;
var_=新列表();
foreach(在Sections.Find(websiteId,sectionId)中的BE.Section小节)
{
int subSectionId=subsection.Id;
var smss=新的SiteMapSubSection();
smss.subSectionUrl=Sections.VirtualPath(subsection)+“.aspx”;
var articles=sa.GetArticlesForSection(websiteId,subSectionId,10);
var_articles=新列表();
foreach(条款中的var条款)
{
var sma=新的SiteMapArticle();
sma.url=article.Code+“.aspx”;
_条款。添加(sma);
}
_增加(smss)小节;
}
siteMapSection.Add(sms);
}
foreach(节中的变量节)
{
.....
var sms=newsitemapsection{sectionUrl=section.Url};
sms.subSection=新列表();
.....
foreach(var小节中的小节)
{
.....
var smss=新建站点地图子节{subsection}
ssms.article=新列表();
.....
var articles=GetNextArticles(0,subSectionId,true,false);
.....
foreach(条款中的var条款)
{
添加(新的SiteMapArticle{article});
}
sms.添加小节(ssms);
}
siteMapSection.Add(sms);
}

我刚刚意识到您正在尝试向
列表添加不同的类型。不能向常规列表中添加不同的类型。创建列表时,您正在定义列表中允许的类型,当您尝试添加不同的类型时

你需要改变

siteMapSection.Add(new SiteMapSubSection { ??stuck_here?? });

如果您提供更多的上下文,也许我们可以为您提供一个更好的方法


希望这能有所帮助。

你能详细说明一下“卡在这里”吗??。有什么问题?@Lee我想在SiteMapSection类型的列表中添加项。第一个??stuck_here=subSectionUrl(在SiteMapSubSection中),第二个stuck_here=url(在SiteMapArticle类中)
        List<SiteMapSection> siteMapSection = new List<SiteMapSection>();
        SectionArticle sa = new SectionArticle();

        foreach (BE.Section section in Sections.Find(websiteId, parentSectionId))
        {
            int sectionId = section.Id;
            var sms = new SiteMapSection();
            sms.sectionUrl = Sections.VirtualPath(section) + ".aspx";

            var _subsections = new List<SiteMapSubSection>();
            foreach (BE.Section subsection in Sections.Find(websiteId, sectionId))
            {
                int subSectionId = subsection.Id;
                var smss = new SiteMapSubSection();
                smss.subSectionUrl = Sections.VirtualPath(subsection) + ".aspx";

                var articles = sa.GetArticlesForSection(websiteId, subSectionId, 10);
                var _articles = new List<SiteMapArticle>();
                foreach (var article in articles)
                {
                    var sma = new SiteMapArticle();
                    sma.url = article.Code + ".aspx";
                    _articles.Add(sma);
                }
                _subsections.Add(smss);
            }
            siteMapSection.Add(sms);
        }
foreach (var section in sections)
{
    .....
    var sms = new SiteMapSection { sectionUrl = section.Url };
    sms.subSection = new List<SiteMapSubSection>();
    .....
    foreach (var subsection in subsections)
    {
        .....
        var smss = new new SiteMapSubSection { subsection }
        ssms.article = new List<SiteMapArticle>();
        .....
        var articles = GetNextArticles(0, subSectionId, true, false);
        .....
        foreach(var article in articles)
        {
            smss.article.Add(new SiteMapArticle { article });
        }
        sms.subSection.Add(ssms);

    }
    siteMapSection.Add(sms);

}
siteMapSection.Add(new SiteMapSubSection { ??stuck_here?? });
siteMapSection.Add(new SiteMapSection { ??stuck_here?? });