【发布时间】:2018-04-18 16:47:49
【问题描述】:
我一直使用 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 数组中定义的单词。
所以我尝试了下面的 sn-p 并且 包含 工作。
foreach (var applicationProcess in appProcessList)
{
if (applicationProcess.FileName.Contains(FilenamesToParse[0]))
{
}
}
我哪里错了? 提前致谢。
【问题讨论】:
-
我确定有文件名包含在 FilenamesToParse 数组中定义的单词。 我确定不是,但我们如何在不知道数组中的内容的情况下进行测试?
-
dps.FileName 的一些值是什么。了解正在检查哪些数据会有所帮助...
-
第二次检查与第一次检查相反...
-
你的两个方法不相似。在您的 linq 中,您正在迭代您的
FilenamesToParse-array 并检查它的任何元素是否完全匹配dps.FileName,从而在第二个中您迭代appProcessList并检查其是否为FileName-属性包含第一个FilenamesToParse。 -
Array.Contains,本质上是您在第一个示例中调用的内容,与String.Contains(您在第二个示例中调用的内容)不同。