我有一个常见问题(FAQ)数据库,其中包含以下列:id,Question,Answer,Category和Keywords。
我想从用户那里获取输入并在我的数据库中搜索匹配项。我最终想要获取搜索字符串并检索在问题或关键字列中找到任何搜索字符串的所有记录。
由于我在Linq to Sql中相对较新,我试图先让一个列搜索工作,然后尝试进行双列搜索。我的代码仍然失败。我已经看过其他类似主题的帖子,但推荐的解决方案并不适用于我的情况。尝试调整这些解决方案失败了。
我的代码中有问题的部分:
private FAQViewModel getSearchResultFAQs(string search)
{
FAQViewModel vm = new FAQViewModel();
vm.isSearch = true;
string[] searchTerms = search.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
//var ques = db.FAQs.Where(q => q.Keywords.Intersect(searchTerms).Any());
var ques = db.FAQs.Where(q => searchTerms.Any(t => q.Keywords.Contains(t)));
List<FAQ> list = new List<FAQ>();
foreach(var qs in ques)
{
FAQ f = new FAQ();
f.Question = qs.Question;
f.Answer = qs.Answer;
f.Category = qs.Category;
f.Keywords = qs.Keywords;
f.id = qs.id;
list.Add(f);
}
CategoryModel cm = new CategoryModel();
cm.faqs = list;
vm.faqs.Add(cm);
return vm;
}
此代码失败。 q.Keywords
以红色表示
字符串不包含&#39; Intersect&#39;
的定义
非常感谢任何协助。
我评论了糟糕的代码并使用了Gilad的第一个建议。我现在收到以下错误:
&#34;除了Contains运算符之外,本地序列不能用于查询运算符的LINQ to SQL实现。&#34;
它不喜欢foreach代码块:
foreach(var qs in ques)
我真的不在这里,但它非常接近工作。