2013-10-10 82 views
1

我需要基於搜索,每個關鍵詞都有一套KeywordSearch的生成關鍵詞自動完成sugestions列表列​​表中選擇不重複的記錄有一個關鍵字「公司名稱」,我將有KeywordSearch「Company」和「Name」。從關鍵字

我現在所擁有的功能,即無法正常工作是:

public IList<KeywordDto> GetAllBySearch(string keywords, int numberOfRecords) 
{ 
    var splitKeywords = keywords.Split(new Char[] { ' ' }); 
    var keywordQuery = _keywordRepository.Query.Where(p => p.IsActive == true); 
    var keywordSearchQuery = _keywordSearchRepository.Query; 

    var keywordIds = keywordSearchQuery 
         .GroupBy(k => k.Keyword.Id) 
         .Where(g => splitKeywords.All(w => g.Any(k => w.Contains(k.Name)))) 
         .Select(g => g.Key); 

    IList<KeywordDto> keywordList = (from kw in keywordQuery 
             join kwids in keywordIds on kw.Id equals kwids 
             select new KeywordDto { Id = kw.Id, Name = kw.Name }) 
             .Take(numberOfRecords) 
             .Distinct() 
             .OrderBy(p => p.Name).ToList(); 
    return keywordList; 
} 

我需要根據關鍵字串建立一個關鍵字列表,因此,如果關鍵字=「COMPA」我回來「公司名稱」與部分「大膽」的風格,或者如果關鍵字=「Compa Nam」我用「大膽」與粗體風格等返回「公司名稱」...

現在發生的是,它無法找到KeywordSearch中的「Comp」部分。

有何建議?

感謝

回答

1

如果我沒有記錯w.Contains(k.Name)是關鍵組成部分。

w"Compa",k.Name是關鍵字搜索"Company""Name"。所以你問的是「Compa」是否包含「Company」或「Name」,這是錯誤的。

k.Name.Contains(w)(或k.Name.StartsWith(w, StringComparison.CurrentCultureIgnoreCase)如果您不希望區分大小寫)應該返回正確的結果。

+0

嗨,感謝它的工作很棒! ;)順便說一句,你可以看看這個:http://stackoverflow.com/q/19796132/1480877它是相似的,但有點複雜。謝謝 – Patrick