我想使用dapper来查询dbf文件。在我的文件example.dbf中,我有两列:
我写了类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");
但这个解决方案非常难看,也许有人有更好的解决方案。
答案 0 :(得分:6)
您始终可以返回动态,然后将其映射到对象并在对象初始化期间执行转换操作。
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();