您好我正在尝试在LINQ中使用IN条件。

我有以下查询:

select * from unitphotos Where MarketingFileTypeID = 2
AND UnitTypeID in (Select UnitTypeID from unitTypes Where PropertyID = 1)


我想我无法仅在一个LINQ查询中做到这一点,所以我做到了:

var listUnitTypes = (from ut in db.unittypes
                     where ut.PropertyID == propertyID
                     select new { ut.UnitTypeID }).ToList();
var getPropertyPhotos = (from up in db.unitphotos
                         where listUnitTypes.Contains(up.UnitTypeID)
                         select up).ToList();


但是,它在Contains(up.UnitTypeID)中给了我一个语法错误:“参数1:无法从'int'转换为'匿名类型int UnitTypeID'

有人知道我在做什么错吗?

谢谢

最佳答案

var getPropertyPhotos = (from up in db.unitphotos
                         where unittypes.Any(ut => ut.PropertyID == propertyID && ut.UnitTypeId == up.UnitTypeID)
                         select up).ToList();


我认为这应该有效。还没尝试过,因为我没有ymmv的数据库。

另外,如果您只使用select new { ut.UnitTypeID }代替select ut.UnitTypeID,则您的应该可以使用

09-13 07:45