字符串包含在 LINQ 中不起作用

String Contains Does Not Work In LINQ

我一直使用 Contains 方法来为我的 LINQ 查询获得 SQL IN 功能。

但是这一次,很奇怪的事情发生了。

我有一个这样的字符串数组:

string[] FilenamesToParse = {"JOHN_X200-", "DOE_X300-", "FOO_X300_M-"};

然后我像下面这样使用这个数组:

var result = (from dps in appProcessList
                   where FilenamesToParse.Contains(dps.FileName)
                   select dps.Devices).ToList()

以上查询结果为 0,但我确定文件名包含 FilenamesToParse 数组中定义的单词。

所以我尝试了下面的代码片段并且 Contains 起作用了。

foreach (var applicationProcess in appProcessList)
{
   if (applicationProcess.FileName.Contains(FilenamesToParse[0]))
   {

   }
}

我哪里错了? 提前致谢。

你们两个方法不一样。在你的 linq 中你正在迭代你的 FilenamesToParse-array 并检查它的任何元素 完全匹配 dps.FileName,而在第二个你迭代 appProcessList 并检查其 FileName-属性 是否包含 第一个 FilenamesToParse.

以下是类似于您的循环的 linq 方法:

var result = (from dps in appProcessList
               where FilenamesToParse.Any(x => dps.FileName.Contains(x))
               select dps.Devices).ToList()