【问题标题】:Populating Nested List<> in MVC4 C#在 MVC4 C# 中填充嵌套列表<>
【发布时间】:2013-12-17 06:16:36
【问题描述】:

我在填充嵌套列表时遇到问题

对象图如下所示:

路线⇒路段⇒坐标

每当我尝试填充Сoordinates 列表时,它只会覆盖以前的记录,最后只给我最后一个坐标记录。但我想要所有的坐标。

这是我的控制器代码:

List<RequestRouteDataClass> result = new List<RequestRouteDataClass> {  
     new RequestRouteDataClass() { 
         RouteRequestId = objRouteManagement.RouteRequestId, 
         RouteName = objRouteManagement.RouteName, 
         RouteDescription = objRouteManagement.RouteDescription, 
         RouteSections = new List<RouteSections> { 
         new RouteSections() { 
             Route_Sections_Id = objSections.Route_Sections_Id, 
             Section_Speed = objSections.Section_Speed, 
             Section_Description = objSections.Section_Description,                                                     
             RouteCordinatesSections = new List<SectionCoordinatesRelationData> { 
                 new SectionCoordinatesRelationData() { 
                     SectionCoordinate_Relat_Id = objSectionsCordinates.SectionCoordinate_Relat_Id, 
                     CoordinateLat = objSectionsCordinates.CoordinateLat, 
                     CoordinateLag = objSectionsCordinates.CoordinateLag  
                 }
             }
         }
     } 
 }

【问题讨论】:

    标签: asp.net-mvc-4 c#-4.0 visual-studio-2012 generic-collections


    【解决方案1】:

    如果你想使用嵌套列表。

    您的模型包含 =>

    public class MainModelToUse
        {
            public MainModelToUse()
            {
                FirstListObject = new List<FirstListClass>();
            }
    
            public List<FirstListClass> FirstListObject { get; set; }
        }
    
    
       public class FirstListClass
        {
            public FirstListClass()
            {
                SecondListObject = new List<SecondListClass>();
            }
    
            public List<SecondListClass> SecondListObject { get; set; }
        }
    
    
      public class SecondListClass
         {
            public SecondListClass()
            {
                ThirdListObject = new List<ThirdListClass>();
            }
    
            public List<ThirdListClass> ThirdListObject { get; set; }
        }
    
    
       public class ThirdListClass
        {
    
        }
    

    嵌套列表的代码 =>

            FirstListClass vmFirstClassMenu = new FirstListClass();
                vmFirstClassMenu.SecondListClass = new List<SecondListClass>();
                FirstListClass vmFirstClassCategory = new FirstListClass();
    
    
                var dataObject1 = //Get Data By Query In Object;
    
                foreach (Model objModel in dataObject1)
                {
                    vmFirstClassCategory = new FirstListClass
                    {
                        //Your Items
                    };
    
                    var DataObject2 = //Get Data By Query In Object;
    
                    vmFirstClassCategory.SecondListClass = new List<SecondListClass>();
    
                    foreach (SecondListClass menuItem in DataObject2)
                    {
                        SecondListClass vmFirstClassMenuItem = new SecondListClass
                        {
                           //Your Items
                        };
    
                        var DataObject3 = //Get Data By Query In Object;
                        vmFirstClassMenuItem.ThirdListClass = new List<ThirdListClass>();
    
                        foreach (ThirdListClass price in DataObject3)
                        {
                            ThirdListClass vmThirdClassobj = new ThirdListClass
                            {
                                //Your Items
                            };
    
                            vmFirstClassMenuItem.ThirdListClass.Add(vmThirdClassobj);
                        }
                        vmFirstClassCategory.SecondListClass.Add(vmFirstClassMenuItem);
                    }                
                }   
    

    希望这是您正在寻找的。​​p>

    【讨论】:

    • 感谢它对我有用...我认为调用构造函数是关键。
    【解决方案2】:

    首先:间距有助于提高可读性(编辑:但我看到你已经在你的问题中解决了这个问题):

     List<RequestRouteDataClass> result = new List<RequestRouteDataClass> 
     { 
         new RequestRouteDataClass() 
         {
             RouteRequestId = objRouteManagement.RouteRequestId, 
             RouteName = objRouteManagement.RouteName, 
             RouteDescription = objRouteManagement.RouteDescription, 
             RouteSections = new List<RouteSections> 
             { 
                 new RouteSections()  
                 { 
                     Route_Sections_Id = objSections.Route_Sections_Id, 
                     Section_Speed = objSections.Section_Speed, 
                     Section_Description = objSections.Section_Description,                                                     
                     RouteCordinatesSections = new List<SectionCoordinatesRelationData> 
                     { 
                         new SectionCoordinatesRelationData() 
                         { 
                             SectionCoordinate_Relat_Id = objSectionsCordinates.SectionCoordinate_Relat_Id, 
                             CoordinateLat = objSectionsCordinates.CoordinateLat, 
                             CoordinateLag =objSectionsCordinates.CoordinateLag 
                         } 
                     } 
                 }
             } 
         }
     };
    

    下一步:您对上述内容所做的是在每个列表中使用单个元素来启动您的列表。如果您想要更多元素,则必须添加它们。我建议使用foreachAdd() 功能来填写您的列表。

    从您的示例中,不清楚您的源数据是如何存储的,但如果您有多个数据,我希望这些数据也会出现在列表或某种数组中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-16
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      相关资源
      最近更新 更多