2011-03-26 57 views
1

我試圖做到這一點Automaper如何映射此?

public class TaskTableViewModel 
{ 
    public string CourseCoursePermissionsBackgroundColor { get; set; } 
} 

public class Course 
{ 
    public virtual IList<CoursePermission> CoursePermissions { get; set; } 

    public Course() 
    { 
     CoursePermissions = new List<CoursePermission>(); 
    } 
} 

    public class CoursePermission 
{ 
    public virtual string BackgroundColor { get; set; } 

} 

所以我試圖讓BACKGROUNDCOLOR到視圖模型,但我不能算出它,因爲它是在列表中。

List<Task> tasks = taskService.GetAllTasks("[email protected]"); 

    List<TaskTableViewModel> viewModel = new List<TaskTableViewModel>(); 
    List<TaskTableViewModel> taskViewModelList = new List<TaskTableViewModel>(); 

    viewModel = Mapper.Map<List<Task>, List<TaskTableViewModel>>(tasks); 

這就是我想要做的。

taskViewModelList[i].CourseCoursePermissionsBackgroundColor = tasks[i].Course.CoursePermissions.BackgroundColor 

上面的問題會讓我獲得顏色。所以最後Task和taskTableViewModel在每個集合中應該有相同的編號。

+0

的'Course.CoursePermission'需要像'Course.CoursePermission指數[0]'它是有意義的我。你能解釋一下這個指數應該是什麼? – svrist 2011-03-26 19:09:40

+0

@svrist - 雅我想我可能需要一個索引(它應該是零)。我想弄清楚如何告訴automapper這個。 – chobo2 2011-03-26 19:30:06

回答

0

首先創建

Mapper.CreateMap<Task,TaskTableViewModel>() 
      .ForMember(dest => dest.CourseCoursePermissionsBackgroundColor, 
         opt => opt.MapFrom(src=>src.Course.CoursePermissions[0].BackgroundColor)); 

然後嘗試Mapper.Map你有

+0

嗯...我想這是它必須完成的方式。我的意思是我不喜歡索引是硬編碼爲零,但也許我有一些設計缺陷(我不是很好的數據庫結構)。無論哪種方式,我這樣做我想我會有零指數。 – chobo2 2011-03-26 19:41:03

+1

我不知道。您正嘗試將某個列表映射到單個字段。你必須選擇你想要的列表元素,或者將列表映射到另一個列表 – svrist 2011-03-26 19:54:47

+0

你也許可以使用像src.Course.CoursePermission.Any()?src.Course.CoursePermission.First()。BackgroundColor: SomeDefaultColor' – svrist 2011-03-26 19:57:13