Чтение CSV с помощью LINQ – индекс за пределамиC#

Место общения программистов C#
Ответить
Anonymous
 Чтение CSV с помощью LINQ – индекс за пределами

Сообщение Anonymous »

Мой файл .csv имеет формат -

Код: Выделить всё

Group No,Group Name,Type,Class,Category,Description,Product,Quantity,Stock,Id,Name
1,B,X,Y,Table,Wooden Table,Table,12,50,123,XYZ
Я пытаюсь прочитать этот CSV-файл, используя следующий LINQ –

Код: Выделить всё

var data = lines
.Select((line, index) => new { Line = line, Index = index + 1 }) // capture line number
.Skip(1) // skip header
.Select(x => x.Line.Split(',').Select(field => field.Trim()).ToArray()
.Select(fields => new {
grpNo = fields[0],
product = fields[6],
Qty = fields[7],
stock = fields[8],
ID = fields[9],
Name = fields[10],
LineIndex = x.Index
})).ToList();
Проблема в том, что этот LINQ не дает мне никаких результатов. Я отладил этот LINQ шаг за шагом и обнаружил, что до этой части мой LINQ работает нормально, и я могу видеть данные -

Код: Выделить всё

var data = lines
.Select((line, index) => new { Line = line, Index = index + 1 }) // capture line number
.Skip(1) // skip header
.Select(x => x.Line.Split(',').Select(field => field.Trim()).ToArray()
Но когда я включаю следующую часть —

Код: Выделить всё

Select(fields => new {
grpNo = fields[0],
product = fields[6],
Qty = fields[7],
stock = fields[8],
ID = fields[9],
Name = fields[10],
LineIndex = x.Index
})).ToList();
мне это ничего не дает. При отладке я обнаружил, что в переменной данных указано, что индекс выходит за пределы массива
Но я перепроверил это и знаю, что использую правильные индексные номера. для каждого поля.
Я даже удалил все и проверил grpNo = поля[0], мне выдало то же сообщение «Индекс за пределами границ».
Пожалуйста, предложите. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/787 ... -of-bounds
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»