2013-10-10 57 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