代码之家  ›  专栏  ›  技术社区  ›  Chud37

动态添加LINQ Where子句

  •  1
  • Chud37  · 技术社区  · 6 年前

    我有以下代码从目录中获取文件和文件夹:

    var files = Directory.EnumerateFiles(sourceDIR.Text, "*.*", SearchOption.AllDirectories).Where(s => s.EndsWith(".mp4") || s.EndsWith(".mov"));
    

    但是,我有一个组合框,其中包含我想要循环使用的文件扩展名,如何将它们动态添加到where子句?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Tetsuya Yamamoto    6 年前

    .Where(s => ListOfExtensions.Contains(Path.GetExtension(s)));
    
        2
  •  0
  •   fs_dm    6 年前

    可以编写字符串扩展类

    internal static class StringFileExtension
    {
        public static bool EndsWithFromList(this string fileInfo, List<string> fileExtensions)
        {
            foreach (var extension in fileExtensions)
            {
                if (fileInfo.EndsWith(extension))
                    return true;
            }
    
            return false;
        }
    }
    

            List<string> fileExtensions = new List<string>
            {
                ".mp4",
                ".mov",
                "..."
            };
    
            var files = Directory.EnumerateFiles(sourceDIR.Text, "*.*", SearchOption.AllDirectories).Where(s => s.EndsWithFromList(fileExtensions));
    

    别忘了在使用位置包含扩展名称空间