2014-09-02 30 views
-3

我有以下类别: -迭代通过收集和在列表中添加项目<T>

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; } 
} 

我使用SiteMapSection类作为列表中的某个类型: -

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

现在,我'试图在'siteMapSection'列表中添加项目,如下所示: -

foreach (var section in sections) 
{ 
    ..... 
    siteMapSection.Add(new SiteMapSection { sectionUrl = section.Url }); 
    ..... 
    foreach (var subsection in subsections) 
    { 
     ..... 
     siteMapSection.Add(new SiteMapSubSection { ??stuck_here?? }); 
     ..... 
     var articles = GetNextArticles(0, subSectionId, true, false); 
     ..... 
     foreach(var article in articles) 
     { 
      siteMapSection.Add(new SiteMapArticle { ??stuck_here?? }); 
     } 
    } 
} 

如何迭代collect并在列表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); 
     } 
+0

你可否详谈一下?? stuck_here ??。问题是什么? – Lee 2014-09-02 09:58:12

+0

@Lee我想在类型SiteMapSection的列表中添加项目。首先?? stuck_here = subSectionUrl(在SiteMapSubSection),第二个stuck_here = url(在SiteMapArticle类中) – 2014-09-02 10:00:47

回答

-1
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); 

} 
0

我只是意识到你正在尝试添加不同类型为List<SiteMapSection>。您不能将不同类型添加到通用列表。创建列表时,您正在定义列表中允许的类型,其中您正尝试添加不同的类型。

您需要更改

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

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

如果您提供多一点背景也许我们可以给你,一般一个更好的办法。

希望这会有所帮助。