【发布时间】:2017-07-25 15:36:36
【问题描述】:
我的代码运行良好
if (dt.Rows.Count < 0)
{
DataRow row = dt.NewRow();
foreach (DataColumn column in dt.Columns)
{
if (column.ColumnName == "CreatedDate")
{
row[column] = DateTime.MinValue;
}
else
{
row[column] = 0;
}
}
dt.Rows.Add(row);
DataColumn col = new DataColumn("Status", typeof(string));
col.DefaultValue = "0";
dt.Columns.Add(col);
}
return dt;
这个DataTable 有这些列具有提到的数据类型:
- ID:内部
- 全名:字符串
- 用户名:字符串
- 密码:字符串
- user_email: 字符串
- 角色:字符串
- CreatedDate:日期时间
我在 web api 控制器中使用的这段代码。它以 json 格式从 SQL 查询返回数据
但是如果DataTable 是空的,那么为了防止在json 中返回一个空数组,我使用这个代码;如果DataTable 为空,则每个字段都将返回零。
现在我将这段代码转换成一行(三元运算符)如下:
DataRow row = dt.NewRow();
foreach (DataColumn column in dt.Columns)
{
row[column] = (column.ColumnName == "CreatedDate") ? DateTime.MinValue : 0;
}
dt.Rows.Add(row);
DataColumn col = new DataColumn("Status", typeof(string));
col.DefaultValue = "0";
dt.Columns.Add(col);
return dt;
我也尝试了这两种方法:
row[column] = (column.DataType == DateTime) ? DateTime.MinValue : 0;
和
column.ColumnName == "CreatedDate" ? (row[column] = DateTime.MinValue) : (row[column] = 0);
但它们不起作用
错误是:
无法确定条件表达式的类型,因为 System.DatTime 和 int 之间没有隐式转换
如何解决?
【问题讨论】:
标签: c#