c# - 如何使用 Linq 在字符串中搜索列表的任何项目

标签 c# entity-framework linq

我要写搜索查询。在那个查询中,我有一个像这样的字符串列表:

var listWords=new List<string>(){"Hello","Home","dog","what"};

我还有客户名单。如果客户的姓名至少包含 listWords 中的一项,我该如何搜索:

  • jack

  • 什么一只大

尝试过:

var prodList = events.Where(x =>listWords.IndexOf(x.Name.Trim().ToLower()) != -1).ToList();

最佳答案

使用 .Where.Any :

var result = events.Where(c => listWords.Any(w => c.Name.Contains(w)));

您的解决方案存在问题,您正在将字符串转换为小写字母,但单词集合中的字符为大写字母。在这种情况下,它将找不到匹配项: How can I make Array.Contains case-insensitive on a string array?

关于c# - 如何使用 Linq 在字符串中搜索列表的任何项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45790528/

相关文章:

c# - "OR"按需使用 Linq to Entities,我该怎么做?

c# - 部分 LINQ 查询分离方法 (EF Core)

c# - 存储库模式中的 IQueryable 与 IEnumerable,延迟加载

c# - WCF:通用接口(interface)的序列化是否可能?

linq - 不支持嵌套查询。操作 1 ='UnionAll' 操作 2 ='MultiStreamNest'

c# - LINQ to Entities 分组依据和 Count()

c# - 插入 Entity Framework 后启动应用程序时出错

c# - 意外错误 : LINQ to Entities does not recognize the method 'System.String DecryptValue(Byte[], System.String)' method

c# - 如何通过自定义扩展方法使用 C# Linq 谓词

c# - 如何初始化加载程序列表