람다와 중첩 된 다음 LINQ- 쿼리를 수행하려고 할 때 다음 예외가 발생합니다.EF4에서 람다를 LINQ로 중첩하는 데 문제가 있습니다.
유형의 상수 값을 만들 수 없습니다. 이 컨텍스트에서는 기본 유형 ('Int32, String 및 Guid'등) 만 지원됩니다.
람다를 제거하면 제대로 작동하지만 결과가 좋지 않습니다.
var context = new dbContext();
var searchQuery = (from q in context.Questions
where q.Topic.Contains(searchTerm) || q.QuestionText.Contains(searchTerm)
select q).ToList();
var questionsBasedOnTags = (from tags in context.Tags
where tags.Tag.Contains(searchTerm)
select tags).ToList();
List<QuestionHasTags> tagQuestionIds = new List<QuestionHasTags>();
foreach (var item in questionsBasedOnTags)
{
var getQuestionIds = (from q in context.QuestionHasTags
where context.QuestionHasTags.Any(o => o.TagId == item.TagId && !searchQuery.Any(w => w.QuestionId == o.Questions.QuestionId) && !tagQuestionIds.Any(z => z.QuestionId == o.Questions.QuestionId))
select q).ToList();
foreach (var questionHasTagId in getQuestionIds)
{
tagQuestionIds.Add(questionHasTagId);
}
}
내가 예외를 얻는 이유에 대한 단서, 내가 잘못했거나 다른 방법으로 무엇을했는지에 대한 단서가 있습니까?
도움을 미리 감사드립니다. 당신이 context.QuestionHasTags
으로 목록을 혼합 ToList()
를 통해 실행을 강제 c를 작동하지 않습니다/B
여러 변수를 사용함에있어 의미를 나타내지 않고 말하기 때문에 말하기 어렵습니다. –
좀 더 관련성 높은 코드를 포함하도록 코드 블록을 업데이트했습니다. – wardh