2011-03-26 53 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