Dapper:无法从 dbf 解析字符串(错误解析列)

Dapper: Not able to parse string from dbf(Error parsing column)

我想使用 dapper 查询 dbf 文件。在我的文件 example.dbf 中,我有两列:

  1. 值 - 类型为 NUMERIC
  2. 名称 - 类型为字符

我写classExampleDbf

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

现在我想写两个简单的查询

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

ListOne 可以,但是当我执行 listTwo 时,我有以下 System.Data.DataException:

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

当我使用标准 DataReader 时,我必须编写类似的东西

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

当然可以这样写:

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();
        }
    }
}

现在可以了

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

但是这个解决方案很丑陋,也许有人有更好的解决方案。

您总是可以return一个动态,然后将其映射到您的对象并在对象初始化期间执行转换操作。

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();