有没有一种有效的方法可以向实体列表中的DateTime字段添加小时?

时间:2019-11-04 22:11:01

标签: c# entity-framework

我正在选择具有以下属性的实体列表:

  1. id (int)
  2. 代码 (varchar)
  3. 创建 (日期时间)

我正在使用lambda表达式选择这些实体,如下所示:

var codes = context.ProgramCodes.ToList();

实体的created字段是UTC时间戳,但是我希望它是UTC +4。

除了显而易见的方法,即遍历列表中的每个实体,并向created字段添加4个小时,还有其他更有效的方法吗?

3 个答案:

答案 0 :(得分:3)

是:

请勿转换。

您的系统(UI)将能够在本地时区中显示它,具体取决于时区设置。

在通常情况下,添加像这样的时区信息是一种代码味道。

根据UI的线程区域性信息,可以使用各种本地化的格式扩展来完成UI中的转换。

答案 1 :(得分:1)

您可以使用ToLocalTime()方法将其读取为本地时间。

答案 2 :(得分:0)

for循环对此足够有效, 但是,如果您希望将某些内容放在一行中,也许可以尝试以下linq:

codes.Select(c => {c.created += 4; return c;}).ToList();

由于懒惰的评估,为了立即评估选择,需要ToList