有没有人可以帮助解决这个问题。
用户有一个属性列表,属性有一个用户列表。
我首先进行查询以获取具有特定CompanyId的所有属性。这会产生一个新列表,我们称之为MyProperties。
我需要在MyProperties列表中获取所有具有属性的租户。
由于其他原因,我无法访问“PropertiesUsers”连接表。
对不起,如果看起来我没有想到这一点,我一直在敲打我的脑袋。
答案 0 :(得分:1)
您可以使用Enumerable.SelectMany()
展平层次结构:
var myProperties = dbContext.Properties.Where(property => property.CompanyId = companyId);
var tenants = myProperties.SelectMany(property => property.Tenants);
答案 1 :(得分:1)
使用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());