在ASP.NET核心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

我正在尝试使用ASP.NET Core EF Core和Linq创建一个查询,该查询将根据两个不同的列表为我提供一个用户列表,如下所示:

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);