c# - LinQ WHERE string.Contains 或 string.IndexOf?

标签 c# .net linq

我需要写一些能给出与以下相同结果的东西:

var result = collection.Where( o => o.Name.IndexOf( "some_string2" ) != -1 || o.Name.IndexOf( "some_string_2" ) != -1 || o.Name.IndexOf( "some_string3" ) != -1 )

要检查的字符串的数量和值(some_string_1、2 和 3)未知(来自 DB),所以更通用的东西...

我尝试了以下,但失败了......

var stringsToCheck = someCommaSeparatedStrings.ToLower().Split( ',' ).ToList();
var result = collection.Where( o => stringsToCheck.Contains( o.ToLower() ) );

换句话说,我需要从一个集合中检索名称包含一些特定字符串的所有对象。

最佳答案

var result = collection.Where(item => stringsToCheck.Any(stringToCheck => 
    item.Name.Contains(stringToCheck)));

用英文阅读是这样的:给我集合中的所有项目,其中所有字符串中检查其中一个是集合中字符串的子字符串。

关于c# - LinQ WHERE string.Contains 或 string.IndexOf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14346961/

相关文章:

c# - 如何使用 C# 获取 char**?

java - .Net RSA加密,Java RSA解密

vb.net - 匿名类型,从 if 语句转换为 AsQueryable,然后进行查询

c# - 从 ID 在另一个列表中的列表中删除项目

c# - F# 使用非托管 dll 函数

c# - 长整数文字

c# - 如何将二维 JSON 数组发布到 Web 服务

c# - 我需要帮助使用安装项目部署 Winform 应用程序

c# - 如何使用 C#(Windows 窗体)启用控件的双缓冲?

c# - array.Take(13).Skip(x) 减去 take