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

Ker*_*bur -5 c# linq contains

我总是使用Contains方法来获取LINQ查询的SQL IN功能.

但这次,发生了很奇怪的事情.

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

string[] FilenamesToParse = {"JOHN_X200-", "DOE_X300-", "FOO_X300_M-"};
Run Code Online (Sandbox Code Playgroud)

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

var result = (from dps in appProcessList
                   where FilenamesToParse.Contains(dps.FileName)
                   select dps.Devices).ToList()
Run Code Online (Sandbox Code Playgroud)

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

所以我试过下面的片段和包含工作.

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

   }
}
Run Code Online (Sandbox Code Playgroud)

我错在哪里?提前致谢.

Him*_*ere 6

你的两个appraoches不相似.在你的linq中你正在迭代你的FilenamesToParse-array并检查它的任何元素是否完全匹配 dps.FileName,在第二个你迭代appProcessList并检查它的FileName-property是否包含第一个FilenamesToParse.

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

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