Я беру нулевой кредит, потому что я сделал так, чтобы ReSharper сделал это для меня, но вот что он предложил.
private IEnumerable<string> getFiles(string strDirectory, bool bCompressedOnly) {
foreach (var strFile in Directory.GetFiles(strDirectory).Where(strFile => !bCompressedOnly || Path.GetExtension(strFile).ToLower().Equals(".zip"))) {
yield return strFile;
}
foreach (var strFile in Directory.GetDirectories(strDirectory).SelectMany(strDir => getFiles(strDir, bCompressedOnly))) {
yield return strFile;
}
}
Все они - произвольные изменения, и в некотором смысле (по крайней мере, в первом цикле) они немного запутывают логику, но принимают или оставляют ее. Кроме того, проверьте ReSharper , если вы еще этого не сделали. :)