2017-04-15 67 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