我的代码中有以下行。
我的指示是SkipWhile()
将阻止空值,并且只将有效值传递给ForEach()。但是空值也传递给ForEach()
。在这段代码中可能会失败的是什么?
logChildFolder.SkipWhile(path1 => string.IsNullOrEmpty(path1))
.ToList<string>()
.ForEach(path2 => copyLogFiles(args.SetupInfo.SetupDataFolder, path2));
答案 0 :(得分:4)
使用Where
方法,即:
logChildFolder.Where(path1 => !string.IsNullOrEmpty(path1))
假设logChildFolder
中的代码值为:null
,a
,b
,null
。 logChildFolder.SkipWhile(path1 => string.IsNullOrEmpty(path1))
将返回a
,b
,null
。
答案 1 :(得分:2)
SkipWhile
方法只会跳过第一项,只要有空值,只要有一个非空值,它就会让剩下的项目通过。使用Where
方法过滤项目。
此外,您将功能风格与非功能风格混合在一起。只需使用foreach
循环来循环项目。这样可以避免创建间歇性列表:
foreach (string path in logChildFolder.Where(p => !string.IsNullOrEmpty(p))) {
copyLogFiles(args.SetupInfo.SetupDataFolder, path);
}