从关键字列表中选择不同的记录

帕特里克

我需要根据搜索生成关键字的自动填充摘要列表,其中每个关键字都有一组KeywordSearch:

关键字类别:

public class Keyword
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class KeywordSearch
{
    // Primary properties
    public int Id { get; set; }
    public string Name { get; set; }
    public Keyword Keyword { get; set; }
}

因此,如果有一个类似“公司名称”的关键字,那么我将使用关键字搜索“公司”和“名称”。

我现在无法正常使用的功能是:

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;
}

我需要基于关键字字符串构建KeywordList,因此,如果关键字=“ Compa”,则返回带有粗体样式的“ Comp”部分的“ Company Name”,或者,如果关键字=“ Compa Nam”,则返回带有带有大胆风格的“ Compa Nam”等...

现在发生的是,它无法在KeywordSearch中找到“比较”部分。

有什么建议吗?

谢谢

卡巴拉

如果我没记错w.Contains(k.Name)的话,关键部分。

w"Compa"k.Name您是KeywordSearch"Company""Name"因此,您要问“ Compa”是否包含“ Company”或“ Name”,这是错误的。

k.Name.Contains(w)(或者k.Name.StartsWith(w, StringComparison.CurrentCultureIgnoreCase)如果您不希望它区分大小写),则应返回正确的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章