我总是使用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)
我错在哪里?提前致谢.
你的两个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)
| 归档时间: |
|
| 查看次数: |
653 次 |
| 最近记录: |