c# - 可查询列表转换
问题描述
我需要使用 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;
}
我在这里先向您的帮助表示感谢。
PS:类/代码当然是一个简化的例子。
解决方案
那这个呢 :
retQueryable = query.AsEnumerable().Select(k => new UserDTO()
{
Id = k.Id,
TeamsDTOList = k.Teams.Select(t => new TeamDTO(){ Id = t.Id, Teamname = t.Teamname}).ToList()
});
推荐阅读
- sql-server - 当 SQL Server 中的子级可用时阻止父级删除
- mongodb - 如何计算所有选定数据集的平均时间值?
- memory - 用 Arduino 返回字节数组
- c# - 使用 C# HttpClient 下载的 Skype Emoticon 与使用浏览器下载的字节流不同
- python - Pandas - 为每个实例选择最大值
- javascript - 通过'this'在javascript中列出()php
- r - 在 R 的全局环境中使用从包函数动态加载的 dll
- java - 从包含键的映射中获取最接近键的最快方法:5、10、15、20、25 等到 200
- javascript - 使用 javascript 操作页面上的元素
- azure-devops - 为什么 Azure-DevOps 用户看不到其他用户?