如何在LINQ中搜索整个单词?

如果我在{"carpenter","car repair","carrying","car workshop"}等字符串列表中搜索“car”一词,则结果应仅为“car repair”和“car workshop”。
我尝试下面的代码

  List<string> _tags = (from item in string_array
                                 where item.ToLower().Contains(search_term)
                                 select item).ToList();

但是,包含总是返回相似的单词,我在Linq Regex for whole word search上找到了此链接
使用Regx无法提供完整的答案。

因此,任何人都可以帮助在Regx中编写答案,或者可以与Linq一起使用任何其他选项。

最佳答案

试试这个:

var result = items.Where(i => i.Split(' ').Any(word => word.ToLower() == "car")).ToList();

如果需要考虑逗号,则可以改用以下方式:
var reg = new Regex("\\bcar\\b", RegexOptions.IgnoreCase);

var items = new [] { "carpenter", "car repair", "carrying", "car workshop", "car, repair", "car. repair", "car,repair" };
var result = items.Where(word => reg.IsMatch(word)).ToList();

给出:
car repair
car workshop
car, repair
car. repair
car,repair

关于c# - LINQ中的全字搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31239536/

10-13 06:00