我需要使用TeamsDTO列表填充UserDTO的IQueryable,而无需foreach循环或具体化数据。
我有以下课程:
public class User
{
public int Id {get;set;}
public string Name {get;set;}
public List<Team> Teams {get;set;}
}
public class Team
{
public int Id {get;set;}
public string Teamname {get;set;}
public string Description {get;set;}
}
以及以下DTO:
public class UserDTO
{
public int Id {get;set;}
public List<TeamDTO> TeamsDTOList{get;set;}
}
public class TeamDTO
{
public int Id {get;set;}
public string Teamname {get;set;}
}
到目前为止,还有《守则》:
public static IQueryable<UserDTO> GetQueryableUserDTO(IQueryable<User> query)
{
var retQueryable = Enumerable.Empty<UserDTO>().AsQueryable();
try
{
retQueryable = query.AsEnumerable()
.Select(k => new UserDTO
{
Id = k.Id,
TeamsDTOList= new List<TeamDTO>()
{
//Can't figure out this part
}
});
}
catch (Exception ex)
{
BaseManager.Write2Log(ex);
}
return retQueryable;
}
非常感谢您的帮助。
P.S .:当然,类/代码是一个简化的示例。
答案 0 :(得分:2)
那呢:
retQueryable = query.AsEnumerable().Select(k => new UserDTO()
{
Id = k.Id,
TeamsDTOList = k.Teams.Select(t => new TeamDTO(){ Id = t.Id, Teamname = t.Teamname}).ToList()
});