我有以下LINQ语句,以及现有变量IEnumerable<int> conceptIds
和int companyId
:
from c in dbContext.stt_concept
let A = from compDict in dbContext.stt_company_dictionary
where compDict.company_id == companyId
select compDict.dictionary_id
let B = from c2 in dbContext.stt_concept
where A.Contains(c2.dictionary_id)
select c2.id
select B.Intersect(conceptIds))
但是,这会抛出异常,并显示消息“不支持指定的方法”。内部异常的TargetSite属性提到DbIntersectExpression
,因此我认为使用Intersect
时出现了问题。
但是,根据MSDN,源是IQueryable,参数是IEnumerable,两者都包含相同的类型(int
,或者因此intellisense让我相信)。
我使用Intersect
是错还是其他?
答案 0 :(得分:1)
(from c in dbContext.stt_concept
join compDict in dbContext.stt_company_dictionary
on c.dictionary_id equals compDict.dictionary_id
where compDict.company_id == companyId
select c.id)
.Intersect(conceptIds)
这不是你想要做的吗?