加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用LINQ在C#中计算文件数

发布时间:2020-12-15 08:31:20 所属栏目:百科 来源:网络整理
导读:环境:C#,VStudio 2013,4.5框架,Winforms 目标:获取与存储在字符串数组中的扩展名匹配的文件夹和子文件夹中的文件数(Count).扩展数组可以是“.”不是. { “.DAT”,“TXT”,“味精”} 到目前为止我做了什么:当我有“.”在扩展数组中,一切正常:{“.dat”,“
环境:C#,VStudio 2013,4.5框架,Winforms

目标:获取与存储在字符串数组中的扩展名匹配的文件夹和子文件夹中的文件数(Count).扩展数组可以是“.”不是. { “.DAT”,“TXT”,“味精”}

到目前为止我做了什么:当我有“.”在扩展数组中,一切正常:{“.dat”,“.txt”,“.msg”}

我尝试过替换,但它总是返回0.

工作代码(仅当字符串数组中始终带有“.”时):

string[] ext= new string[] { ".txt",".msg",".dat" };
totalFilesInTN = Directory.EnumerateFiles(dlg1.SelectedPath,"*.*",SearchOption.AllDirectories)
                          .Count(s => ext.Any(s1 => s1 == Path.GetExtension(s)));

不工作的代码(总是返回0):

string[] ext= new string[] { "txt","dat" };
totalFilesInTN = Directory.EnumerateFiles(dlg1.SelectedPath,SearchOption.AllDirectories)
                          .Count(s => ext.Any(s1 => s1 == Path.GetExtension(s).Replace(".","")));

解决方法

Path.GetExtension方法的文档声明返回值为:

The extension of the specified path (including the period “.”),or null,or String.Empty.

你的第二段代码剥离了’.’所以没有一个元素会匹配.因此,请使用与扩展列表相反的方式,并确保每个扩展名的开头都有一个’.’然后使用您的第一个代码块.

string[] ext = new string[] {"txt",".dat" }
    .Select(x => x.StartsWith(".") ? x : "." + x)
    .ToArray();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读