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

时间:2017-11-06 13:42:51

标签: c# 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数组中定义的字词。

所以我尝试过以下代码段并包含工作。

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

   }
}

我在哪里错了? 提前谢谢。

1 个答案:

答案 0 :(得分:6)

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

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

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