我一直使用包含方法来获取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]))
{
}
}
我在哪里错了? 提前谢谢。
答案 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()