您好我正在尝试在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
,则您的应该可以使用