Dapper: no se puede analizar cadena de dbf (columna de análisis de errores)

c# dapper dbf

Pregunta

Quiero usar dapper para consultar sobre archivos dbf. En mi archivo example.dbf tengo dos columnas:

  1. Valor - tipo NUMERIC
  2. Nombre - tipo CARÁCTER

Escribo clase ExampleDbf

class ExampleDbf
{
    public int Value { get; set; }
    public string Name { get; set; }
}

Ahora quiero escribir dos consultas simples

var listOne = connection.Query<ExampleDbf>("SELECT value FROM Example");
var listTwo = connection.Query<ExampleDbf>("SELECT name, value FROM Example");

ListOne está bien, pero cuando ejecuto listTwo tengo Have following System.Data.DataException:

Additional information: Error parsing column 0 (name=System.Byte[] - Object)

Cuando uso el DataReader estándar, debo escribir algo así

example.name = System.Text.Encoding.ASCII.GetString((byte[])reader["name"]).Trim();

Por supuesto, puedo escribir algo como esto:

class ExampleDbf2
{
    public int Value { get; set; }
    public byte[] Name { get; set; }
    public string StringName
    {
        get
        {
            return System.Text.Encoding.ASCII.GetString((byte[])Name ).Trim();
        }
    }
}

Entonces ahora funciona

var listTwo = connection.Query<ExampleDbf2>("SELECT name, value FROM Example");

Pero esta solución es muy fea, tal vez alguien tenga una mejor solución.

Respuesta aceptada

Siempre puede devolver una dinámica, luego asignarla a su objeto y realizar la operación de transformación durante la inicialización del objeto.

var listTwo = connection.Query<dynamic>("SELECT name, value FROM Example")
    .Select(x => new ExampleDbf 
        { 
            Value = x.value,  
            Name = System.Text.Encoding.ASCII.GetString((byte[])x.name).Trim()
        }).ToList();


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué