C# Dapper:无法从dbf分析字符串(分析列时出错)
我想使用dapper查询dbf文件。在我的文件example.dbf中,我有两列:C# Dapper:无法从dbf分析字符串(分析列时出错),c#,dapper,dbf,C#,Dapper,Dbf,我想使用dapper查询dbf文件。在我的文件example.dbf中,我有两列: 值类型数字 名称类型字符 我写了一个例子 class ExampleDbf { public int Value { get; set; } public string Name { get; set; } } 现在我想写两个简单的查询 var listOne = connection.Query<ExampleDbf>("SELECT value FROM Example"); v
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");
当我使用标准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 listwo=connection.Query(“从示例中选择名称、值”);
但是这个解决方案非常难看,可能有人有更好的解决方案。您可以始终返回一个动态,然后将其映射到您的对象,并在对象初始化期间执行转换操作
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();
var listwo=connection.Query(“从示例中选择名称、值”)
.选择(x=>newexampledbf
{
Value=x.Value,
Name=System.Text.Encoding.ASCII.GetString((字节[])x.Name).Trim()
}).ToList();
数据库中的数据是字符数据;dapper永远不会代表你做编码决策:这个问题太不清楚了。。。如果需要,可以使用垫片属性。。。
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();