2016-06-11 2 views
0

SQL 데이터베이스에서 데이터를 가져 오려고하는데 5 개의 레코드가 나타납니다. 그러나 5 개의 레코드 목록에서 두 개의 목록을 따로 만들어야합니다. 나는 아래에 그것을 할 노력하고 있어요 :컬렉션 목록에 데이터를 추가하는 방법 #

public class ParentModel 
{  
    public List<Model1> Child1 { get; set; } 
    public List<Model2> Chil2{ get; set; } 
} 

내 다른 두 모델은 다음과 같습니다

public class Model1 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int? GroupNumber { get; set; } 
    public string Description { get; set; } 
} 

public class Model2 
{ 
    public string Name { get; set; } 
    public int? Number { get; set; } 
} 

내가 모두 내 서비스에서 ParentModel에 정의 된 목록이 있지만 널 (null) 예외를 던지고있다 채우는 싶습니다 . 내 목록에 데이터를 추가하려면 어떻게합니까?

public ParentModel GetALL(int ID) 
{ 
    ParentModel objModel = new ParentModel(); 

    // here I fetch data from database using Iqueryable: 
    IQueryable<Products> List = this._products.GetAll(); 
    var NamesList = List .Where(m => m.Id == ID).ToList(); 

    // Here I need to add data to my list. Also if it can be 
    // followed in a best possible way, Please do share it with me. 

    foreach (var obj in NamesList) 
    { 
     objModel.Child1.Add(new Model1 
     { 
      Id=obj.Id, // Here it throws error of null exception 
      Name = obj.Name, 
      GroupNumber = obj.GroupNumber, 
      Description =obj.Description 
     }); 

     // the other list I would like to populate at the same time is 
     objModel.Chil2.Add(new Model2 
     { 
      Name = obj.Name, 
      Number = obj.Number 
     }); 
    } 
} 

답변

1

몇 가지 방법이 있습니다. 가장 쉬운 방법은 생성자를 추가하는 것입니다.

public class ParentModel 
    { 

     public List<Model1> Child1 { get; set; } 

     public List<Model2> Chil2 { get; set; } 

     public ParentModel() 
     { 
      Child1 = new List<Model1>(); 
      Chil2 = new List<Model2>(); 
     } 

    } 
+0

정말 멋지 네요. 잘 작동합니다. 왜이 속성들을 새로운 속성으로 생성해야하는지, 왜 먼저 속성에 메모리를 할당해야하는지에 대해 설명해 주시겠습니까? 내가 아는 한 생성자와 함께 new를 사용하지 않고 클래스의 모든 속성을 사용할 수 있습니다. – Sweetie

+1

이 올바른지 확인하고 올바른 특성이 리턴됩니다. 그러나 child1과 chil2는 처음 초기화 될 때 모두 NULL이며 null 객체에서 .Add를 호출 할 수 없습니다. – DevilSuichiro

+1

이들은 목록 개체이며 {get; set}은 목록을 초기화하지 않습니다. – jdweng

관련 문제