快速Linq操作文件名列表

时间:2017-04-15 19:40:04

标签: c# string performance list linq

我有成千上万个文件名格式的文件:

public static string mTimeFormat = "yyyyMMdd_HHmmss_fff__N";

其中N可以是从1到大数的任何东西(比方说1,000,000)。

这些是在子文件夹中枚举的文件名 - 请不要问我如何以及为什么 - 这是一个现有项目 - 它的工作原理和速度很快。刚才必须添加N号 。这打破了最初由以下文件完成的文件范围的快速检索:

// retrieve range of file names
string t1 = startTime.ToString(mTimeFormat);
string t2 = endTime.ToString(mTimeFormat);
List<string> results = fileNameList.FindAll(s => (String.Compare(s, t1, true) > 0) && (String.Compare(s, t2, true) < 0));

为了保持现有代码的正常运行(速度很快),我需要删除“__N” 文件名是为了保持文件名范围的快速检索。 我尝试遍历列表,但速度不够快......对Linq操作的任何建议都会在一次快速操作中从每个文件名中删除“__N”?

1 个答案:

答案 0 :(得分:1)

虽然端部“可以是任何东西”,但第一部分应该被修复,所以只需从那里取出子串应该没问题。然而,LINQ不会带来速度上的好处,因为它也在内部迭代列表。但是,这段代码值得一试:

var lengthOfFirstPart = "yyyyMMdd_HHmmss_fff".Length;
fileNameList = fileNameList
               .Select(f=>f.SubString(0, lengthOfFirstPart)
               .ToList(); // assuming it was a List<string> before