usarlos ponerse para oreja hacer expansores expansor expansiones expandir dilatadores cuerno con como cinta casero caracol acetato 3mm .net csv filehelpers

.net - ponerse - FileHelpers y CSV: qué hacer cuando un registro puede expandirse sin límites, horizontalmente



expansor de 8 (2)

Podría crear una clase MyRecord que contenga todos los valores potenciales, por ej.

[DelimitedRecord(",")] public class MyRecord { public string Name; public int Value1; ..... [FieldOptional] public int Value5; ...... [FieldOptional] [FieldNullValue(typeof(int), "-1" )] public int Value14; }

y hacer que la mayoría de esos campos sean opcionales (n. ° 5 a 14 en mi ejemplo) y combinarlos con, por ejemplo, un FieldNullValue para manejar esos campos no existentes (o convertir esos campos opcionales en nullable int:

public int? Value5

Estoy tratando de analizar este tipo de archivo CSV con 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

No puedo entender cómo analizar esto con FileHelpers. Me imagino que debería ser capaz de hacer algo como esto:

[DelimitedRecord(",")] public class MyRecord { public string Name; public List<int> Values; }

Pero eso no parece ser posible con FileHelpers. Lo mejor que puedo hacer es esto:

[DelimitedRecord(",")] public class MyRecord { public string Name; public string Values; public string[] ActualValuesInNiceArray { get { return Values.Split(new[] {'',''}, StringSplitOptions.RemoveEmptyEntries); } } }

Entonces necesitaría dividir los Values en comas para obtener el conjunto de valores para cada registro. No parece ser muy útil utilizar FileHelpers si tengo que analizar manualmente una parte de cada registro.

¿Me estoy perdiendo de algo? Revisé documentos / ejemplos, pero parece que no puedo encontrar una solución para mi formato. Excel no tiene problemas con mi formato, así que me imagino que hay una manera de hacerlo con una biblioteca libre existente (FileHelpers o alguna otra biblioteca). ¿Algunas ideas?


Puede usar un campo de matriz y la biblioteca hará el trabajo:

[DelimitedRecord(",")] public class MyRecord { public string Name; public int[] Values; }

Incluso puede usar [FieldArrayLength (2, 8)]

[DelimitedRecord(",")] public class MyRecord { public string Name; [FieldArrayLength(2, 8)] public int[] Values; }

Establece el número mínimo / máximo de valores

Recomiendo descargar la última versión de la biblioteca desde aquí:

http://teamcity.codebetter.com/viewType.html?buildTypeId=bt65&tab=buildTypeStatusDiv

Verifique la sección de artefactos