C# 在列表中赋值<;T>;当T模型本身具有列表时<;T>;作为财产

C# 在列表中赋值<;T>;当T模型本身具有列表时<;T>;作为财产,c#,list,class,C#,List,Class,我需要一个编码帮助。我有3个类:SiteMapSection(保存sectionUrl和SiteMapSubSection列表)、SiteMapSubSection(保存subSectionUrl和SiteMapArticle列表)和SiteMapArticle。这是班级结构 public class SiteMapSection { public string sectionUrl { get; set; } public List<SiteMapSubSection&g

我需要一个编码帮助。我有3个类:SiteMapSection(保存sectionUrl和SiteMapSubSection列表)、SiteMapSubSection(保存subSectionUrl和SiteMapArticle列表)和SiteMapArticle。这是班级结构

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; }
}
            var siteMapSection = new List<SiteMapSection>();
            DL.SectionArticle sa = new NewsFeed.BusinessTier.DataAccessLayer.SectionArticle();

            foreach (BE.Section section in BL.Sections.Find(websiteId, parentSectionId))
            {
                int sectionId = section.Id;
                var mySection = new SiteMapSection();
                mySection.sectionUrl = BL.Sections.VirtualPath(section) + ".aspx";
                mySection.subSection = new List<SiteMapSubSection>();

                siteMapSection.Add(mySection);// NOTICE CHANGE HERE

                //Debug.WriteLine(siteMapSection[0].sectionUrl);

                foreach (BE.Section subsection in BL.Sections.Find(websiteId, sectionId))
                {
                    int subSectionId = subsection.Id;

                    var mySubSection = new SiteMapSubSection();
                    mySubSection.subSectionUrl = BL.Sections.VirtualPath(subsection) + ".aspx";
                    mySubSection.article = new List<SiteMapArticle>();
enter code here
                    mySection.subSection.Add(mySubSection);// NOTICE CHANGE HERE

                    //Debug.WriteLine(smss[0].subSectionUrl);

                    var articles = sa.GetArticlesForSection(websiteId, subSectionId, 10);
                    foreach (var article in articles)
                    {

                        mySubSection.article.Add(new SiteMapArticle { url = BL.Sections.VirtualPath(subsection) + "/" + article.Code + "-" + UrlEncoding.ArticleEncode(article.Headline) + ".aspx" });// NOTICE CHANGE HERE

                        //Debug.WriteLine(sma[0].url);
                    }
                }
            }

请帮我做这个。提前感谢。

在构造函数中初始化小节

public class SiteMapSection
{
   public string sectionUrl { get; set; }
   public List<SiteMapSubSection> subSection { get; set; }
   public SiteMapSection()
   {
        subSection    =new List<SiteMapSubSection>();
   }

 }
            var siteMapSection = new List<SiteMapSection>();
            DL.SectionArticle sa = new NewsFeed.BusinessTier.DataAccessLayer.SectionArticle();

            foreach (BE.Section section in BL.Sections.Find(websiteId, parentSectionId))
            {
                int sectionId = section.Id;
                var mySection = new SiteMapSection();
                mySection.sectionUrl = BL.Sections.VirtualPath(section) + ".aspx";
                mySection.subSection = new List<SiteMapSubSection>();

                siteMapSection.Add(mySection);// NOTICE CHANGE HERE

                //Debug.WriteLine(siteMapSection[0].sectionUrl);

                foreach (BE.Section subsection in BL.Sections.Find(websiteId, sectionId))
                {
                    int subSectionId = subsection.Id;

                    var mySubSection = new SiteMapSubSection();
                    mySubSection.subSectionUrl = BL.Sections.VirtualPath(subsection) + ".aspx";
                    mySubSection.article = new List<SiteMapArticle>();
enter code here
                    mySection.subSection.Add(mySubSection);// NOTICE CHANGE HERE

                    //Debug.WriteLine(smss[0].subSectionUrl);

                    var articles = sa.GetArticlesForSection(websiteId, subSectionId, 10);
                    foreach (var article in articles)
                    {

                        mySubSection.article.Add(new SiteMapArticle { url = BL.Sections.VirtualPath(subsection) + "/" + article.Code + "-" + UrlEncoding.ArticleEncode(article.Headline) + ".aspx" });// NOTICE CHANGE HERE

                        //Debug.WriteLine(sma[0].url);
                    }
                }
            }
公共类SiteMapSection
{
公共字符串部分URL{get;set;}
公共列表子节{get;set;}
公共站点地图部分()
{
分段=新列表();
}
}

初始化变量
部分和
小节中的集合
并直接添加到它们中

            var siteMapSection = new List<SiteMapSection>();
            DL.SectionArticle sa = new NewsFeed.BusinessTier.DataAccessLayer.SectionArticle();

            foreach (BE.Section section in BL.Sections.Find(websiteId, parentSectionId))
            {
                int sectionId = section.Id;
                var mySection = new SiteMapSection();
                mySection.sectionUrl = BL.Sections.VirtualPath(section) + ".aspx";
                mySection.subSection = new List<SiteMapSubSection>();

                siteMapSection.Add(mySection);// NOTICE CHANGE HERE

                //Debug.WriteLine(siteMapSection[0].sectionUrl);

                foreach (BE.Section subsection in BL.Sections.Find(websiteId, sectionId))
                {
                    int subSectionId = subsection.Id;

                    var mySubSection = new SiteMapSubSection();
                    mySubSection.subSectionUrl = BL.Sections.VirtualPath(subsection) + ".aspx";
                    mySubSection.article = new List<SiteMapArticle>();
enter code here
                    mySection.subSection.Add(mySubSection);// NOTICE CHANGE HERE

                    //Debug.WriteLine(smss[0].subSectionUrl);

                    var articles = sa.GetArticlesForSection(websiteId, subSectionId, 10);
                    foreach (var article in articles)
                    {

                        mySubSection.article.Add(new SiteMapArticle { url = BL.Sections.VirtualPath(subsection) + "/" + article.Code + "-" + UrlEncoding.ArticleEncode(article.Headline) + ".aspx" });// NOTICE CHANGE HERE

                        //Debug.WriteLine(sma[0].url);
                    }
                }
            }
var siteMapSection=new List();
DL.SectionArticle sa=NewsFeed.BusinessTier.DataAccessLayer.SectionArticle();
foreach(BL.Sections.Find中的BE.Section(网站ID,父节ID))
{
int sectionId=section.Id;
var mySection=新建SiteMapSection();
mySection.sectionUrl=BL.Sections.VirtualPath(section)+“.aspx”;
mySection.subSection=新列表();
siteMapSection.Add(mySection);//注意这里的更改
//Debug.WriteLine(siteMapSection[0].sectionUrl);
foreach(在BL.Sections.Find(websiteId,sectionId)中的BE.Section小节)
{
int subSectionId=subsection.Id;
var mySubSection=new SiteMapSubSection();
mySubSection.subSectionUrl=BL.Sections.VirtualPath(subsection)+“.aspx”;
mySubSection.article=新列表();
在这里输入代码
mySection.subSection.Add(mySubSection);//注意这里的更改
//Debug.WriteLine(smss[0].subSectionUrl);
var articles=sa.GetArticlesForSection(websiteId,subSectionId,10);
foreach(条款中的var条款)
{
mySubSection.article.Add(新建SiteMapArticle{url=BL.Sections.VirtualPath(小节)+“/”+article.Code+“-”+UrlEncoding.articleCode(article.Headline)+“.aspx”});//注意这里的更改
//Debug.WriteLine(sma[0].url);
}
}
}
试试这个:

            var siteMapSection = new List<SiteMapSection>();
            DL.SectionArticle sa = new NewsFeed.BusinessTier.DataAccessLayer.SectionArticle();

            foreach (BE.Section section in BL.Sections.Find(websiteId, parentSectionId))
            {
                int sectionId = section.Id;
                var mySection = new SiteMapSection();
                mySection.sectionUrl = BL.Sections.VirtualPath(section) + ".aspx";
                mySection.subSection = new List<SiteMapSubSection>();

                siteMapSection.Add(mySection);// NOTICE CHANGE HERE

                //Debug.WriteLine(siteMapSection[0].sectionUrl);

                foreach (BE.Section subsection in BL.Sections.Find(websiteId, sectionId))
                {
                    int subSectionId = subsection.Id;

                    var mySubSection = new SiteMapSubSection();
                    mySubSection.subSectionUrl = BL.Sections.VirtualPath(subsection) + ".aspx";
                    mySubSection.article = new List<SiteMapArticle>();
enter code here
                    mySection.subSection.Add(mySubSection);// NOTICE CHANGE HERE

                    //Debug.WriteLine(smss[0].subSectionUrl);

                    var articles = sa.GetArticlesForSection(websiteId, subSectionId, 10);
                    foreach (var article in articles)
                    {

                        mySubSection.article.Add(new SiteMapArticle { url = BL.Sections.VirtualPath(subsection) + "/" + article.Code + "-" + UrlEncoding.ArticleEncode(article.Headline) + ".aspx" });// NOTICE CHANGE HERE

                        //Debug.WriteLine(sma[0].url);
                    }
                }
            }
var siteMapSection = new List<SiteMapSection>();
        DL.SectionArticle sa = new NewsFeed.BusinessTier.DataAccessLayer.SectionArticle();

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


            Debug.WriteLine(siteMap.sectionUrl);
        var smss = new List<SiteMapSubSection>();
            foreach (BE.Section subsection in BL.Sections.Find(websiteId, sectionId))
            {
                int subSectionId = subsection.Id;
                var sms=new SiteMapSubSection { subSectionUrl = BL.Sections.VirtualPath(subsection) + ".aspx" };
        Debug.WriteLine(smss[0].subSectionUrl);                



        var sma = new List<SiteMapArticle>();
                var articles = sa.GetArticlesForSection(websiteId, subSectionId, 10);
                foreach (var article in articles)
                {
                    var sm= new SiteMapArticle { url = BL.Sections.VirtualPath(subsection) + "/" + article.Code + "-" +             UrlEncoding.ArticleEncode(article.Headline) + ".aspx" };  
                    sma.Add(sm);

                    Debug.WriteLine(sm.url);
                }
        sms.article=sma;
        smss.Add(sms);
            }
        siteMap.subSection=smss;
        siteMapSection.Add(siteMap);
        }
var siteMapSection=new List();
DL.SectionArticle sa=NewsFeed.BusinessTier.DataAccessLayer.SectionArticle();
foreach(BL.Sections.Find中的BE.Section(网站ID,父节ID))
{
int sectionId=section.Id;
var siteMap=newsitemapsection{sectionUrl=BL.Sections.VirtualPath(section)+“.aspx”};
Debug.WriteLine(siteMap.sectionUrl);
var smss=新列表();
foreach(在BL.Sections.Find(websiteId,sectionId)中的BE.Section小节)
{
int subSectionId=subsection.Id;
var sms=newsitemapsubsection{subSectionUrl=BL.Sections.VirtualPath(subsection)+“.aspx”};
Debug.WriteLine(smss[0].subSectionUrl);
var sma=新列表();
var articles=sa.GetArticlesForSection(websiteId,subSectionId,10);
foreach(条款中的var条款)
{
var sm=new SiteMapArticle{url=BL.Sections.VirtualPath(小节)+“/”+article.Code+“-”+UrlEncoding.ArticleEncode(article.Headline)+“.aspx”};
sma.添加(sm);
Debug.WriteLine(sm.url);
}
sms.article=sma;
添加(sms);
}
siteMap.subSection=smss;
添加(站点地图);
}

小节,未找到文章。在foreach启动之前,是否需要像下面这样声明var subSection=new List()和var article=new List()?试过这个,还是没找到。太好了。我看到的是章节列表,但不是文章,这是完全缺失的。我们正在为每个SiteMapSubSection设置文章属性。sms.article=sma;确保物品没有损坏empty@AbhimanyuKumarVatsa子部分为0,因为列表为空。这是一个没有子部分的新对象