有没有办法做这样的事情:
var keywords = SearchUtilities.FindKeyWords(q);
var j = (from p in _dataContext.Jobs
orderby p.JobKeywords.Select(jobKeyword => jobKeyword.Keyword)
.Intersect(keywords).Count())
.Take(10).AsEnumerable();
此处的主要思想是通过搜索查询和与作业关联的关键字中存在的关键字计数来对搜索结果进行排序。
我不想先从SQL-land带来所有记录,然后命令,因为它非常慢。当我尝试该代码时,它会抛出:
除了Contains运算符之外,本地序列不能用于查询运算符的LINQ to SQL实现。
想法?
答案 0 :(得分:0)
如果您在搜索上看到更多性能,我建议您使用存储过程。在我看来,TSQL比LinQ工作得更快。因为Linq得到了所有结果,但是存储过程(TSql)没有记录所有记录。