将值分配给linq表达式Select语句

时间:2017-06-13 10:21:05

标签: c# linq

我尝试将值分配到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

我怎样才能做到这一点?

2 个答案:

答案 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)

我认为你应该澄清你的问题 - 你想要么:

  1. @TimSchmelter's answer
  2. 检索数据库中的日期列表
  3. 检索邮件本身(因此您也可以在其他地方使用它们),然后按@HimBromBeere's answer
  4. 格式化全部或部分邮件

    对于第一个,基本上蒂姆已经说过了(我不认为''格式需要一种文化,因为它是一个标准):

    // materialize with ToList
    var datesOnly = YourGetMessagesFrom(DB).Select(m => m.created_at.ToString("s")).ToList();
    

    另请注意,在您的原始问题中,您提到的是IEnumerable<message>;它(以及可能更合适的IQueryable<message>)可能导致延迟加载,这意味着您的ORM实际上可以进行数据库调用以获取格式化的日期,而不是使用已经检索的消息对象。