我有一个包含 4 列日期时间、id、消息和状态的数据表。我想用新的日期时间更新日期时间列(更新的日期时间位于不同的时区,从 CST 到 UTC)。首先,我想这样做,就像我将日期时间列存储在列表中,并将列表从 cst 转换为 utc 时区。然后将列表添加到同一个表并重新排列列。但这听起来很愚蠢,所以有什么方法可以用数据表一列的新值更新现有值。
我在其中一篇文章中找到了以下代码,但不确定到底发生了什么。
var rowsToUpdate =
dt.AsEnumerable().Where(r => r.Field<string>("datetime") == datetime);
foreach(var row in rowsToUpdate)
{
row.SetField("datetime", utcDate);
}
数据表中的数据采用 CST 时区,但我希望将该时区转换为 UTC 时区并更新表。
List<DateTime> lstCST = new List<DateTime>();
lstCST = datatable.AsEnumerable().Select(r=>r.Field<DateTime>("CSTDatetime")).ToList();
List<DateTime> lstUTC = new List<DateTime>();
DateTime dt = DateTime.Now;
foreach(var v in lstCST )
{
dt= TimeZoneInfo.ConvertTimeToUtc(v);
lstUTC.Add(dt);
}
任何人都可以指出我如何做到这一点的正确方向吗?
最佳答案
如果你想更新所有行,你不需要 LINQ,而是 TimeZoneInfo.ConvertTimeToUtc
:
TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
foreach (DataRow row in dataTable.Rows)
{
DateTime cstDateTime = row.Field<DateTime>("CSTDatetime");
DateTime utcDateTime = TimeZoneInfo.ConvertTimeToUtc(cstDateTime, cstZone);
row.SetField("CSTDatetime", utcDateTime);
}
关于c# - 如何使用 LINQQ 或任何其他方法更新数据表中所有行的第一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41979747/