Я пытаюсь проанализировать этот тип файла CSV с FileHelpers:
Tom,1,2,3,4,5,6,7,8,9,10
Steve,1,2,3
Bob,1,2,3,4,5,6
Cthulhu,1,2,3,4,5
Greg,1,2,3,4,5,6,7,8,9,10,11,12,13,14
Я не могу выяснить, как проанализировать это с FileHelpers. Я предположил бы, что должен быть в состоянии сделать что-то вроде этого:
[DelimitedRecord(",")]
public class MyRecord
{
public string Name;
public List<int> Values;
}
Но это, кажется, не возможно с FileHelpers. Лучшее, которое я, может казаться, делаю, является этим:
[DelimitedRecord(",")]
public class MyRecord
{
public string Name;
public string Values;
public string[] ActualValuesInNiceArray
{
get { return Values.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries); }
}
}
Я тогда должен был бы разделить Values
на запятых для получения набора значений для каждой записи. Кажется, не большая часть точки в использовании FileHelpers, если я должен вручную проанализировать часть каждой записи.
Я пропускаю что-то? Я пробежался через документы/примеры, но, может казаться, не нахожу решение для своего формата. Excel не испытывает затруднений из-за моего формата, таким образом, я предположил бы, что существует способ сделать это с существующей свободной библиотекой (FileHelpers или некоторая другая библиотека). Какие-либо идеи?
Вы можете использовать Array Field и библиотека сделает всю работу:
[DelimitedRecord(",")]
public class MyRecord
{
public string Name;
public int[] Values;
}
Вы даже можете использовать [FieldArrayLength(2, 8)]
[DelimitedRecord(",")]
public class MyRecord
{
public string Name;
[FieldArrayLength(2, 8)]
public int[] Values;
}
Установка минимального/максимального количества значений
Я настоятельно рекомендую скачать последнюю версию библиотеки отсюда:
http://teamcity.codebetter.com/viewType.html?buildTypeId=bt65&tab=buildTypeStatusDiv
Проверьте раздел артефактов
Вы можете создать класс MyRecord
, содержащий все возможные значения, например
[DelimitedRecord(",")]
public class MyRecord
{
public string Name;
public int Value1;
.....
[FieldOptional]
public int Value5;
......
[FieldOptional]
[FieldNullValue(typeof(int), "-1" )]
public int Value14;
}
и сделайте большинство этих полей необязательными (номера с 5 по 14 в моем примере) и объедините это, например, с a FieldNullValue
для обработки этих несуществующих полей (или сделать эти необязательные поля обнуляемыми int:
public int? Value5