字符串包含在 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()
我一直使用 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()