我有一个对象可以说它是从存储库返回的教室,但是我为我的View使用匿名类型,所以我将其转换为
return from P in db.ClassRooms
where P.LocationId == LocationId && P.IsApproved==true
select new ClassRoomsViewModel
{
Id = P.Id,
Created = P.CreatedOn,
IsApproved = P.IsApproved,
IsDeleted = P.IsDeleted,
Desks = ??
}
问题是我不知道如何处理桌面对象。
在我的ClassRoomsViewModel类中,Desks是一个列表对象
public class ClassRoomsViewModel{
public long Id { get; set; }
public DateTime Created { get; set; }
public List<DeskViewModel> Desks { get; set; }
}
public class DeskViewModel{
public long Id { get; set; }
public string Name{ get; set; }
}
教室数据对象是链接,作为对象的参考。 所以从上面的linq查询P.Desks.Name将返回教室中linq查询的所有对象的名称
答案 0 :(得分:4)
您需要从数据模型中获取桌面集合,将每个桌面转换为DeskViewModel
,然后将生成的序列转换为List<T>
。
这看起来像
p.Desks.Select(d => new DeskViewModel { ... }).ToList()
答案 1 :(得分:0)
如果P.Desks.Name和P.Desks.Id是数组,你可以用zip这样做。
return from P in db.ClassRooms
where P.LocationId == LocationId && P.IsApproved==true
select new ClassRoomsViewModel
{
Id = P.Id,
Created = P.CreatedOn,
IsApproved = P.IsApproved,
IsDeleted = P.IsDeleted,
Desks = P.Desks.Name.Zip(P.Desks.Id,
(n, i) => new DeskViewModel { Id = i, Name = n });
}