2010-10-04 199 views
0

有没有办法做这样的事情:搜索 - 顺序按关键词

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的所有记录,然后orderby,因为它很慢。当我尝试代码时,它会抛出:

本地序列不能用于查询运算符的LINQ to SQL实现(Contains运算符除外)。

想法?

回答

0

如果您正在寻找更多搜索性能,我建议您使用存储过程。在我看来,TSQL比LinQ更快。因为Linq获取所有结果,但存储过程(TSql)不会记录所有记录。