如何解决如何在.net C# 中的数据表中将 0 转换为“-”
我得到一个表格,其中有几列包含数字。我想要的是显示“-”以防数字为 0。我尝试在前端执行此操作,但效果不佳。将数据放入 DataTable 中,然后当我尝试直接转换它时,它不是按字符转换而是向我显示 ascii 值 - 45 而不是“-”。
然后我尝试创建一个新的 DataTable 但这也不起作用并抛出与数据类型相关的错误。 这是我尝试过的:
DefaultTabController(
length: 3,child: Scaffold(
appBar: AppBar(
bottom: TabBar(
tabs: [
Tab(icon: Icon(Icons.directions_car)),Tab(icon: Icon(Icons.directions_transit)),Tab(icon: Icon(Icons.directions_bike)),],),);
但这在转换表列时不起作用。 任何想法如何在 C# 中使用相同的 DataTable 或任何它都会非常棒。 如果需要任何进一步的细节或信息,请告诉我。
提前致谢。
解决方法
首先,您的 Dto(数据传输对象)的属性包含十进制表示值(例如 5.67)和“-”应该是类型字符串.
示例:
public class OrderDto
{
public DateTime OrderDate { get; set; }
//public decimal OrderValue { get; set; }
public string OrderValue { get; set; }
}
你的逻辑应该是这样的:
if (reader["order_amount"].ToString() == "0")
{
order.OrderValue = "-";
}
else
{
order.OrderValue = reader["order_amount"].ToString();
}
完整示例:
try
{
var conString = "Data Source=(local);Persist Security Info=False;Initial Catalog=myDatabase;Integrated Security=SSPI";
using (SqlConnection myConnection = new SqlConnection(conString))
{
var qry = "SELECT order_date,order_amount FROM myTable";
SqlCommand cmd = new SqlCommand(qry,myConnection);
myConnection.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var order = new OrderDto();
order.OrderDate = Convert.ToDateTime(reader["order_date"].ToString());
if (reader["order_amount"] != DBNull.Value)
{
if (reader["order_amount"].ToString() == "0")
{
order.OrderValue = "-";
}
else
{
order.OrderValue = reader["order_amount"].ToString();
}
}
Console.WriteLine(JsonSerializer.Serialize(order));
}
myConnection.Close();
}
}
}
catch (SqlException ex)
{
Console.WriteLine($"{ex}");
}
}
结果:
{"OrderDate":"2018-01-31T00:00:00","OrderValue":"2"}
{"OrderDate":"2018-05-25T00:00:00","OrderValue":"-"}
{"OrderDate":"2018-05-28T00:00:00","OrderValue":"-"}