Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Datatable表达式在Datatable中计算列_C#_Datetime_Datatable - Fatal编程技术网

C# 使用Datatable表达式在Datatable中计算列

C# 使用Datatable表达式在Datatable中计算列,c#,datetime,datatable,C#,Datetime,Datatable,我需要在我的datatable中有一个转换的时间戳的新列。我的桌子看起来像 BuildId unixTimeStamp BuildDate 1 1401286554000 - 2 1401286554000 - 3 1401286554000 - 需要使用以下公式计算新列BuildDate dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime(); 我怎样才能达到同样的效果?一直在尝试用同样的方法 wo

我需要在我的datatable中有一个转换的时间戳的新列。我的桌子看起来像

BuildId unixTimeStamp BuildDate
1       1401286554000  -
2       1401286554000  -
3       1401286554000  -
需要使用以下公式计算新列BuildDate

dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
我怎样才能达到同样的效果?一直在尝试用同样的方法

workTable.Columns["BuildDate"].Expression ="dtDateTime.AddSeconds(unixTimeStamp).ToLocalTime()";
获取以下错误

The expression contains undefined function call dtDateTime.AddSeconds().
试着改变

workTable.Columns["BuildDate"].Expression ="dtDateTime.AddSeconds(unixTimeStamp).ToLocalTime()";

我假设您正在使用dtDateTime的硬编码值。
另外,
unixtimestap
必须是
double
,如果它的
字符串
,它会爆炸,您可以尝试强制转换。

我认为在DataColumn.Expression中不可能使用任何DateTime函数。() 所以我不会用表达式,而是用循环

foreach (DataRow dr in workTable.Rows)
    dr["BuildDate"] = new DateTime(1970, 1, 1,0,0,0).AddSeconds(int.Parse(dr["unixTimeStamp"].ToString()));

想知道我的表达式应该是什么样子的WorkTable.Columns[“BuildDate”]。表达式=?我想你已经接近答案了。我尝试了下面的DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc).AddSeconds(unixTimeStamp).ToLocalTime()。获取错误“DateTime运算符后缺少操作数”
unixTimeStamp
必须为双精度,如果它的字符串变大,您可以尝试强制转换。将表达式更改为新的DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc).addmillizes(timestamp/1000).ToLocalTime()…不走运。但当我用timestamp的示例值尝试同样的方法时,效果很好。我已经更新了我的答案。/100不会自动转换这不是javascript。
foreach (DataRow dr in workTable.Rows)
    dr["BuildDate"] = new DateTime(1970, 1, 1,0,0,0).AddSeconds(int.Parse(dr["unixTimeStamp"].ToString()));