2017-04-15 69 views
-1

我有有一个文件名格式文件的数万:快速的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”?

+0

什么是代码不够快? – Steve

+0

一个简单的迭代,您可以找到“__N”的索引并将其添加到新列表的子字符串中... –

回答

1

尽管结束部分“可以是任何东西”,但第一部分应该是固定的,所以只要从中取出子字符串应该没问题。但是,LINQ不会带来速度上的好处,因为它也在内部迭代列表。但是,此代码可能值得一试:

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