2013-03-25 4 views
1

Что является более оптимальным способом чтения в переменных по столбцам и столбцам запроса. Вот что я сейчас делаю.предпочтительный метод запроса

var lines = File.ReadAllLines("readme.csv").Select(a => a.Split(',')); 

//load columns into variables 
var col1 = from line in lines select line[1]; 
var col2 = from line in lines select line[2]; 
var col3 = from line in lines select line[3]; 
var col4 = from line in lines select line[4]; 

//query column 1 
foreach (string line in col1) 
{ //query if ... 
} 
//query column 2 
foreach (string line in col2) 
{ //query if ... 
} 
//query column 3 
foreach (string line in col3) 
{ //query if... 
} 
+0

тело каждого цикла является тем же самым? –

+0

Что ты спрашиваешь? Вероятно, этот объем кода необходим для того, что вы делаете, но без дополнительного кода, чтобы посмотреть, я не могу сказать, что вы действительно хотите знать. – feralin

+0

Похоже, что многомерный массив был бы здесь очень хорош, но @ Илья Иванов прав, обрабатывается то же самое? – neontapir

ответ

1

Что является более оптимальным способом для чтения в переменных столбцов и столбцов запроса.

Вы пытаетесь решить проблему, которая была решена раньше. Существует ряд нюансов с файлами CSV, связанными с экранированием и цитированием.

Я бы предложил использовать CSV Reader из Code Project.

http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader

Я использовал это экстенсивно с очень большими файлами данных (несколько Гб).

Используйте BufferedStream для достижения максимальной производительности:

using (FileStream fs = File.Open(csvPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
using (BufferedStream bs = new BufferedStream(fs)) 
using (CsvReader csv = new CsvReader(new StreamReader(bs), true)) 
+0

Другой читатель CSV из Codeproject http://www.codeproject.com/Articles/242602/Strongly-typed-Csv-reader-CsvToObj-and-Code-First, сообщение кажется но вы можете отрезать прямо к парсеру csv. –

1

ToList() предотвращает дублирование цикла, как ответил в комментарии

Смежные вопросы