我尝试将值分配到D:\NodeApp\app\routes\private\upload.js:35
if (err) throw err
^
Error: EBUSY: resource busy or locked, rename 'D:\NodeApp\uploads\b9998bcbb10326c05f305a6a5a0adb9a' -> 'D:\NodeApp\up
loads\b9998bcbb10326c05f305a6a5a0adb9a\b9998bcbb10326c05f305a6a5a0adb9a'
at Error (native)
语句,并希望以特定的字符串格式转换Select
。
我试图将现有的Date
转换为Date
DateISO 8601 standard format.
我无法在IEnumerable<message> messageObj= // list of message from DB;
messageObj.Select(x => x.created_at= DateTime.Parse(x.created_at.ToString("s", System.Globalization.CultureInfo.InvariantCulture))).ToList();
内ToString
使用created_at
。
我怎样才能做到这一点?
答案 0 :(得分:1)
Linq专为查询而设计(即Q代表的内容),而不是更新。修改集合中的项目是一个坏主意,使用经典的for循环
List<message> messageObj= // list of message from DB;
for(int i = 0; i < messageObj.Count; i++)
{
messageObj[i].created_at = ...;
}
然而,DateTime
只是一个数字(从给定的开始起为几毫秒),因此没有格式。您想要的是您的日期的格式化字符串表示。要做到这一点,你需要第二个变量或成员,例如formatDate
类型的string
。
messageObj[i].formatDate = messageObj[i].created_at.ToString("s", System.Globalization.CultureInfo.InvariantCulture)
答案 1 :(得分:0)
我认为你应该澄清你的问题 - 你想要么:
对于第一个,基本上蒂姆已经说过了(我不认为''格式需要一种文化,因为它是一个标准):
// materialize with ToList
var datesOnly = YourGetMessagesFrom(DB).Select(m => m.created_at.ToString("s")).ToList();
另请注意,在您的原始问题中,您提到的是IEnumerable<message>
;它(以及可能更合适的IQueryable<message>
)可能导致延迟加载,这意味着您的ORM实际上可以进行数据库调用以获取格式化的日期,而不是使用已经检索的消息对象。