You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#新手问询:如何利用过滤列表遍历文件并检查扩展名?

解决方案:用过滤列表检查文件扩展名

嘿,作为C#新手你已经完成了最关键的一步——把配置里的扩展名整理成了干净的小写列表!接下来只需要借助.NET自带的路径工具类,就能轻松完成扩展名检查啦,给你两种实用的方式:

基础实现:直接用List.Contains

我们可以用Path.GetExtension()方法准确获取文件的扩展名(它会自动处理文件名里有多个点的情况,比如"pic.version1.jpg"会正确返回".jpg"),然后转成小写后和你的_FilterList对比:

foreach (var f in files)
{
    // 获取文件扩展名并转小写,和你的过滤列表格式保持一致
    string fileExt = Path.GetExtension(f.Name).ToLower();
    
    // 检查当前扩展名是否在过滤列表中
    if (_FilterList.Contains(fileExt))
    {
        // 这里写符合条件的文件的处理逻辑
        // 比如:Console.WriteLine($"匹配到的图片:{f.Name}");
    }
}

优化性能:用HashSet替代List

如果你的过滤列表很长,或者要处理大量文件,把List<string>转成HashSet<string>会让Contains()方法的查询速度快很多(HashSet的查询时间复杂度是O(1),List是O(n)):

// 提前把List转成HashSet,只需要做一次
HashSet<string> filterSet = new HashSet<string>(_FilterList);

foreach (var f in files)
{
    string fileExt = Path.GetExtension(f.Name).ToLower();
    
    if (filterSet.Contains(fileExt))
    {
        // 处理符合条件的文件
    }
}

额外小提示

如果你的files集合是FileInfo类型的(比如用DirectoryInfo.GetFiles()获取的),还可以直接用f.Extension来获取扩展名,代码会更简洁:

string fileExt = f.Extension.ToLower();

这样就完美实现了用配置里的扩展名列表过滤图片的需求啦!

内容的提问来源于stack exchange,提问作者user1591668

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:54:13