谁能帮我解决这个问题?
用户有一个属性列表,属性有一个用户列表。
首先执行查询以获取具有特定CompanyId的所有属性。这会创建一个新的列表,我们将其命名为MyProperties。
我需要在MyProperties列表中获得所有具有属性的租户。
由于其他原因,我无法访问"PropertiesUsers"连接表。
对不起,如果它看起来像我没有考虑清楚,我已经敲我的头一整天了。您可以使用Enumerable.SelectMany()
来平整化层次结构:
var myProperties = dbContext.Properties.Where(property => property.CompanyId = companyId);
var tenants = myProperties.SelectMany(property => property.Tenants);
使用Intersect
:
var myPropertyIds = MyProperties.Select(p => p.PropertyId).ToArray();
var result = Users.Where(u => myPropertyIds.Intersect(
u.Properties.Select(p => p.PropertyId))
.Any());
如果你确定两个列表中的属性是相同的实例,你可以使用
var result = Users.Where(u => MyProperties.Intersect(
u.Properties)
.Any());