在ASP.NET核心linq中选择两个列表作为一个列表
我正在尝试使用ASP.NET Core EF Core和Linq创建一个查询,该查询将根据两个不同的列表为我提供一个用户列表,如下所示:在ASP.NET核心linq中选择两个列表作为一个列表,linq,asp.net-core,entity-framework-core,Linq,Asp.net Core,Entity Framework Core,我正在尝试使用ASP.NET Core EF Core和Linq创建一个查询,该查询将根据两个不同的列表为我提供一个用户列表,如下所示: return await _context.Users .Include(u => u.PropertyOwners) .ThenInclude(po => po.Property) .ThenInclude(p => p.PropertyTena
return await _context.Users
.Include(u => u.PropertyOwners)
.ThenInclude(po => po.Property)
.ThenInclude(p => p.PropertyTenantLeases)
.Include(u => u.PropertyOwners)
.ThenInclude(po => po.Owner)
.Where(u => u.Id == userID)
.Select(u => new List<User>()
{
u.PropertyTenantLeases.Select(ptl => ptl.Tenant).ToList()
u.PropertyOwners.Select(po => po.Owner).ToList()
}).FirstOrDefaultAsync();
此查询中使用的表通过以下方式连接:
除了Select之外,这个查询一切都很好,我试图通过Select返回PropertyEntantLeases表中所有租户的列表,该表是一个连接表,所有所有者组成PropertyOwners连接表。租户和所有者都是IdentityUser类。当我像这样更正此查询时,会出现以下错误:
The best overloeaded Add method 'List<User>.Add(User)' for the collection initializer has some invalid arguments
而且
Argument 1: cannot convert from 'System.Collections.Generic.List<RosyMasterDBManagement.Models.User>' to 'RosyMasterDBManagement.Models.User'
加入两个名单被称为Linq联盟-我相信这就是你想要的: 注意:我仍然无法测试这一点,因为您提供了数据模型的图片,而不是让我确定如何实现的代码。预期字段名称不正确等
我不相信你需要等待,因为托利斯特强迫它不要懒惰。但我可能是错的。这两次到底是怎么回事?在我看来是一次。是的,这不起作用,我在问如何做这样的事情。不明白……你能展示你的模型和你的预期结果吗?问如何做类似什么的事情?我们无法读懂你的心思,我们需要理解来帮助你。最好的方法是显示起始数据和预期结果。此外,如果这段代码给出了一个错误,你也应该显示出来。更新了问题,希望你现在有了所有的信息。
var ownerlist = _context.Users
.Include(u => u.PropertyOwners)
.ThenInclude(po => po.Owner)
.ToList();
var tenantlist = _context.Users
.Include(u => u.PropertyOwners)
.ThenInclude(po => po.Property)
.ThenInclude(p => p.PropertyTenantLeases)
.ThenInclude(po => po.Tenant)
.ToList();
return ownerlist.Union(tenantlist);