尝试执行以下与Lambda嵌套的LINQ查询时,我收到以下异常。
无法创建类型的常量值。只有原始类型 (在这种情况下支持'',如Int32,String和Guid'。
如果我删除lambda它工作正常,但我当然不会得到我想要的结果。
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);
}
}
为什么我得到异常,我做错了什么或其他方式做任何线索?
提前感谢您的帮助。
答案 0 :(得分:2)
searchQuery
不是查询,而是一个列表,b / c强制执行ToList()
将列表与context.QuestionHasTags
混合不起作用。解决此问题的一种方法是将上下查询合并为一个。