填充嵌套列表<>在MVC4中C#

时间:2013-12-17 06:16:37

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

我在填充嵌套List<>

时遇到问题

对象图如下所示:

  

路线⇒部分⇒坐标

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

这是我的控制器代码:

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

2 个答案:

答案 0 :(得分:2)

如果您想使用嵌套列表。

  

您的模型包含=&gt;

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
    {

    }
  

您的嵌套列表代码=&gt;

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

希望这就是你要找的东西。

答案 1 :(得分:0)

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

 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()功能填充您的列表。

从你的例子中不清楚你的源数据是如何存储的,但如果你有多个东西,我希望它们也可以在列表或某种类型的数组中。