我想通過幾個關鍵字搜索書籍的數據庫。我提供的關鍵詞越多,搜索範圍就越窄。這裏是我的代碼:Queryable.Intersect()與SQLite和Linq不給予預期的結果
var words = text.Split(' ');
IQueryable<Reference> query = null;
foreach (string word in words)
{
var result = from r in _dbConnection.GetTable<Reference>()
where r.Title.Contains(word)
|| r.ReferenceAuthor.Any(a => a.Person.LastName.Contains(word) || a.Person.FirstName.Contains(word))
|| r.ReferenceCategory.Any(c => c.Category.Name.Contains(word))
|| r.ReferenceKeyword.Any(k => k.Keyword.Name.Contains(word))
orderby r.Title
select r;
query = query == null ? result : query.Intersect(result);
}
query.OrderBy(r => r.Title);
問題是,搜索實際上並沒有變窄我提供的關鍵字越多。結果甚至取決於我提供關鍵字的順序。 另外,如果涉及多個關鍵字,那麼最後的OrderBy()調用將無法可靠地工作。我的想法是否有缺陷,或者我實施它的方式?
我正在使用System.Data.SQLite.SQLiteConnection和System.Data.Linq.DataContext。 – 2011-03-21 08:08:52