gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:06:46 24 4
gpt4 key购买 nike

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

  1. 值 - 类型为 NUMERIC
  2. 姓名 - 输入字符

我写类 ExampleDbf

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

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

最佳答案

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

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

关于c# - Dapper:无法从 dbf 解析字符串(错误解析列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29808406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com