我应该构建一个表达式还是有很多代码路径?

时间:2015-11-24 01:43:30

标签: c#

我有一个C#4.0 .Net应用程序,它目前正在解析查找特定字符串的文本行,我想添加搜索所有目录的复选框选项,还可以按扩展名或所有文件进行过滤。

我最终在四个可能的选择中使用Directory.EnumerateFiles语句执行了几个if / else语句。

当我尝试将Enumerable分配给foreach以遍历所有这些时,我一直在上面的代码中脱离上下文时遇到错误。 我猜我需要在每个EnumerateFiles中包含所有代码if / else阻止,还是我?

我是一名VBA开发人员,正在努力跳转到C#,我发现范围和背景对我来说是最大的挑战。在VB中,我会构建一个选项串,然后连接它们(&)以获得可执行的代码行,但尝试使用(+)和字符串变量没有任何成功。

我正在谈论的if / else块如下。

    try
        {
            string sourceDirectory =txtFolder.Text;
            var filters = new[] { txtFileExt.ToString() };
            var result = new List<string>();


            if (txtExtensionsFile == null)
            {
                if (chkSubFolderFiles.Checked)
                {
                    var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.*", SearchOption.AllDirectories) ;
                }
                else
                {
                     var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.*", SearchOption.TopDirectoryOnly) ;
                }
            }
            else
            {
                if (chkSubFolderFiles.Checked)
                {
                    var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.*", SearchOption.AllDirectories).Where(s => filters.Any(ext => ext == Path.GetExtension(s)))) ;
                }
                else
                {
                    var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.*", SearchOption.TopDirectoryOnly).Where(s => filters.Any(ext => ext == Path.GetExtension(s)))) ;
                }
            }
            foreach (string filename in txtFiles)
            {
                using (var reader = new StreamReader(filename))
                if (Path.GetExtension(filename) == txtFileExt.Text) 
    //continues on to parse out text from each file
    }

0 个答案:

没有答案