琳达:多对多

  • 本文关键字:琳达 sql linq
  • 更新时间 :
  • 英文 :


谁能帮我解决这个问题?

用户有一个属性列表,属性有一个用户列表。

首先执行查询以获取具有特定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());

相关内容

  • 没有找到相关文章

最新更新