0
我的查询下面有错误?我得到一个NotSupportedException“”无法创建一个JobLanguage类型的常量值。只有原始类型(“如的Int32,字符串和GUID”)在这方面的支持。”引用非标量变量不支持
public IQueryable<Candidate> GetMatchingCandidates(Job job)
{
return from candidate in _db.Candidates
where candidate.CandidateLanguages.Any(c => job.JobLanguages.Select(jl => jl.LanguageId.Value).Contains(c.LanguageId))
orderby candidate.Name descending
select candidate;
}
//caller
List<Candidate> matchingCandidates = _repository.GetMatchingCandidates(job).ToList();
显然,这是一个已知的问题(http://msdn.microsoft.com/en-us/library/bb896317.aspx#RefNonScalarClosures),但我不知道我怎样才能得到它周围基本上,我想要做的是这样的:Comparing two lists using linq to sql
这正是我刚刚尝试(解压出来),它的工作......谢谢。但是它为什么起作用? – Prabhu
@Prabhu:不同之处在于,只有*列表*结束于表达式树(表示查询的数据),而不是更复杂的“作业”。基本上EF没有足够的智能来理解你在工作中执行的所有操作,所以你需要在EF级别之前完成它们。 –
谢谢,有道理...... – Prabhu