在我的操作中,我将返回IEnumerable<Dto>
,但由于逻辑中的某些更改,我想返回IEnumerable<ViewModel>
。 Dto
和ViewModel
之间的主要区别仅在于两个字段。
public IHttpActionResult GetRecursos(Guid LeccionId)
{
var result = _IProfesorRecurso.GetRecursoFromLeccion(LeccionId);
if (result == null) return BadRequest();
return result;
}
结果是IEnumerable<Dto>
:
public class Dto
{
public Guid Id { get; set; }
/* here are some properties */
}
ViewModel
就是这样:
public class viewmodel
{
public Guid Id { get; set; }
/* here are some properties, the same as in Dto */
public string ViewmodelProperty { get; set; }
}
答案 0 :(得分:1)
假设result
是dto类的集合,您可以使用LINQ查询并使用Select
方法生成视图模型类的新列表
var newList = result.Select(x=>new MyViewModel { Id =x.Id,
Name=x.Name,
ExtraProperty = "New property on vm"});
这与使用foreach
循环遍历结果集合并创建新的MyViewModel对象基本相同
var newList = new List<MyViewModel>();
foreach(var d in result)
{
var vm = new MyViewModel { Id=d.Id, Name =d.Name};
vm.SomeOtherProperty = d.SomeOtherProperty;
vm.ExtraProperty = "New property on vm";
newList.Add(vm);
}