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