Linq很多很多

时间:2014-03-10 06:39:47

标签: sql linq

有没有人可以帮助解决这个问题。

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

我首先进行查询以获取具有特定CompanyId的所有属性。这会产生一个新列表,我们称之为MyProperties。

我需要在MyProperties列表中获取所有具有属性的租户。

由于其他原因,我无法访问“PropertiesUsers”连接表。

对不起,如果看起来我没有想到这一点,我一直在敲打我的脑袋。

2 个答案:

答案 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());