Это было бы относительно быстро написать:
var myStructs =
from file in Directory.GetFiles(".", "*.*", SearchOption.TopDirectoryOnly)
select ConvertFileToStructs(File.ReadAllText(file));
Если это самый быстрый способ, с точки зрения производительности? Наверное, нет, но это не будет иметь большого значения. На производительность будет влиять реализация десериализации в функции ConvertFileToStructs (). Но чтобы ответить на это, нам нужно знать конкретный формат ваших файлов.
Просто прочитайте ваши комментарии. Я бы предложил следующий разбор:
List<MyStruct> ConvertFileToStructs(string content, int[] mapping)
{
var records = new List<MyStruct>();
int length = content.Length();
for(int i = 0; i < length; i += 247)
records.Add(ConvertRecordToStruct(content.Substring(i,247), mapping));
return records;
}
MyStruct ConvertRecordToStruct(string record, int[] mapping)
{
MyStruct s;
s.Field1 = record.Substring(mapping[0], mapping[1]);
//set other fields
return s;
}
Этот код, вероятно, может быть оптимизирован для повышения производительности, но я не думаю, что он кардинально изменит ситуацию, особенно потому, что задействован ввод / вывод на диск и Substring () довольно быстрая (см. http://dotnetperls.com/substring). Конечно вам придется проверить это на своей машине.