gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:17:09 25 4
gpt4 key购买 nike

环境:C#、VStudio 2013、4.5 Framework、Winforms

目标:获取文件夹和子文件夹中与存储在字符串数组中的扩展名相匹配的文件数 (Count)。扩展数组可以带“.”。不。 {".dat","txt",".msg"}

到目前为止我所做的:当我有“.”时在扩展数组中,一切正常:{".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", ".msg", "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", ".msg", ".dat" }
.Select(x => x.StartsWith(".") ? x : "." + x)
.ToArray();

关于c# - 使用 LINQ 在 C# 中计算文件数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30214284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com