2016-01-12 2 views
0

Я пытаюсь установить значение свойства объекта, которое имеет тип List и инициализирует его, используя foreach для добавления элементов в список, например.Инициализировать список с петлей foreach элементов

var sessionPlanner = new SessionPlannerDTO() 
     { 
      Age = "", 
      NumberOfPlayers = session.numberOfPlayers.Value, 
      MedicalInformation = "", 
      PlayerNeeds = "", 
      SessionDate = session.daySessionDate.Value, 
      Location = session.Location.locationName, 
      PracticeView = new List<PracticeViewDTO>(foreach(var practice in session.Sessions){ 
       new PracticeViewDTO(){AbilityLevel = practice.ActivityPlan.abilityLevel.Value, 
       ActivityUrl = practice.ActivityPlan.activityUrl, 
       EquipmentNeeds = practice.ActivityPlan.equipmentNeeds, 
       FacilityNeeds = practice.ActivityPlan.activityNeeds, 
       HealthAndSafety = practice.ActivityPlan.healthAndSafetyIssues, 
       SessionTitle = practice.ActivityPlan.activityName 
       }; 
      }) 

     }; 

PracticeView является то, что я пытаюсь добиться, сделав его список, не делая ниже:

var practiceViewList = new List<PracticeViewDTO>(); 
     foreach(var practice in session.Sessions) 
     { 
      var practiceX = new PracticeViewDTO() 
      { 
       AbilityLevel = practice.ActivityPlan.abilityLevel.Value, 
       ActivityUrl = practice.ActivityPlan.activityUrl 
      }; 
      practiceViewList.Add(practiceX); 
     } 
+1

_ «Я пытаюсь» _ - так, что происходит? – CodeCaster

+0

Можете ли вы рассказать о том, почему вы не хотите этого делать? Это легко достижимо с помощью Linq 'Select', но список все равно будет повторяться в любом случае. –

+2

Просто потому, что вы _can_ напишите весь свой код в одном большом заявлении, не означает, что вы _should_. –

ответ

1

Вы не можете использовать другой код, чем присвоения объекта или инициализаторы. Так что ваш foreach() не будет компилироваться.

Использование session.Sessions.Select() для отображения исходных объектов к вашему DTO и ToList() создать список результата:

sessionPlanner = new SessionPlannerDTO 
{ 
    Age = "", 
    // ... 
    PracticeView = session.Sessions.Select(s => 
     new PracticeViewDTO 
     { 
      AbilityLevel = s.ActivityPlan.abilityLevel.Value, 
      // ... 
     }).ToList() 
}; 

Вы можете также рассмотреть вопрос об использовании AutoMapper, вместо ручного написания кода отображения.

+0

Спасибо, не могу поверить, что я даже не думал об этом. – STNTZ

 Смежные вопросы

  • Нет связанных вопросов^_^