2010-10-04 194 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)不會記錄所有記錄。