I'm trying to parse this type of CSV file with 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
I can't figure out how to parse this with FileHelpers. I would imagine I should be able to do something like this:
[DelimitedRecord(",")]
public class MyRecord
{
public string Name;
public List<int> Values;
}
But that doesn't appear to be possible with FileHelpers. The best I can seem to do is this:
[DelimitedRecord(",")]
public class MyRecord
{
public string Name;
public string Values;
public string[] ActualValuesInNiceArray
{
get { return Values.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries); }
}
}
I then would need to split Values
on commas to get the set of values for each record. Doesn't seem to be much of a point in using FileHelpers if I have to manually parse a portion of each record.
Am I missing something? I've gone over docs/examples, but can't seem to find a solution for my format. Excel has no trouble with my format, so I would imagine there is a way to do it with an existing free library (FileHelpers or some other library). Any ideas?
You can use an Array Field and the library will do the work:
[DelimitedRecord(",")]
public class MyRecord
{
public string Name;
public int[] Values;
}
You can even use [FieldArrayLength(2, 8)]
[DelimitedRecord(",")]
public class MyRecord
{
public string Name;
[FieldArrayLength(2, 8)]
public int[] Values;
}
The set the min/max number of values
I strongly recomend to download the last version of the library from here:
http://teamcity.codebetter.com/viewType.html?buildTypeId=bt65&tab=buildTypeStatusDiv
Check the artifacts section
You could create a class MyRecord
that holds all the potential values, e.g.
[DelimitedRecord(",")]
public class MyRecord
{
public string Name;
public int Value1;
.....
[FieldOptional]
public int Value5;
......
[FieldOptional]
[FieldNullValue(typeof(int), "-1" )]
public int Value14;
}
and make most of those fields optional (no. 5 through 14 in my example) and combine that with e.g. a FieldNullValue
to handle those non-existing fields (or make those optional fields a nullable int:
public int? Value5
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With