我正在选择具有以下属性的实体列表:
我正在使用lambda表达式选择这些实体,如下所示:
var codes = context.ProgramCodes.ToList();
实体的created
字段是UTC时间戳,但是我希望它是UTC +4。
除了显而易见的方法,即遍历列表中的每个实体,并向created
字段添加4个小时,还有其他更有效的方法吗?
答案 0 :(得分:3)
是:
请勿转换。
您的系统(UI)将能够在本地时区中显示它,具体取决于时区设置。
在通常情况下,添加像这样的时区信息是一种代码味道。
根据UI的线程区域性信息,可以使用各种本地化的格式扩展来完成UI中的转换。
答案 1 :(得分:1)
您可以使用ToLocalTime()方法将其读取为本地时间。
答案 2 :(得分:0)
for循环对此足够有效, 但是,如果您希望将某些内容放在一行中,也许可以尝试以下linq:
codes.Select(c => {c.created += 4; return c;}).ToList();
由于懒惰的评估,为了立即评估选择,需要ToList
。