日期时间到字符串转换显示错误

问题描述:

我想用自定义格式将DateTime转换为string。但它显示我LINQ错误日期时间到字符串转换显示错误

LINQ到实体无法识别方法“System.String的ToString(System.String)”的方法,而这种方法不能被翻译成店表达。

这是我在控制器代码:

public ActionResult DaywiseData(DateTime date) 
{ 
    try 
    { 
     var att = db.Attendances 
       .Where(d => d.Date == date) 
       .Select(s => new AttendanceViewModel 
        { 
         Date = s.Date, 
         aa = DateTime.Parse(s.InTime.ToString()).ToString("HH:mm tt"), //Error is not showing after removing this line 
         InTime = s.InTime, 
         OutTime = s.OutTime, 
         EmployeeName = s.Employee.Name, 
         EmployeeUsername = s.Employee.Username 
        }) 
        .ToList(); 
     return Json(att); 
    } 
    catch (Exception ex) 
    { 
     return Json(ex.Message); 
    } 
} 
+0

什么是错误?你能更新答案吗? –

+0

@AkshayKhandelwal OP已经发布了错误.. –

+0

上面给出的错误。 –

你的LINQ被翻译成SQL查询不支持的ToString()。将其保留为DateTime并稍后转换为字符串。这样

public ActionResult DaywiseData(DateTime date) 
{ 
    try 
    { 
     var att = db.Attendances 
       .Where(d => d.Date == date) 
       .Select(s => new AttendanceViewModel 
        { 
         Date = s.Date, 
         DateTime = s.InTime, //dateTime property 
         DateTimeString = string.Empty //string property 
         InTime = s.InTime, 
         OutTime = s.OutTime, 
         EmployeeName = s.Employee.Name, 
         EmployeeUsername = s.Employee.Username 
        }) 
        .ToList(); 
     att.ForEach(a => a.DateTimeString = a.DateTime.ToString("HH:mm tt")); 

     return Json(att); 
    } 
    catch (Exception ex) 
    { 
     return Json(ex.Message); 
    } 
} 
+1

'DateTime.Parse(s.InTime.ToString())'不是必需的,'s.InTime'已经是'DateTime'了。 –

+0

现在工作..很多感谢 –

+0

如果'InTime'是'Nullable'怎么办? –

东西,你会得到错误,因为里面你选择的Expression转换为SQL和数据库服务器上运行,这就是为什么它不承认DateTime.Parse(s.InTime.ToString()).ToString("HH:mm tt")方法。你有两个选择:

更新你的代码兑现您的查询的结果做.Select前:

var att = db.Attendances 
    .Where(d => d.Date == date) 
    .ToList() // Here 
    .Select(s => new AttendanceViewModel 
     { 
      Date = s.Date, 
      aa = DateTime.Parse(s.InTime.ToString()).ToString("HH:mm tt"), //Error is not showing after removing this line 
      InTime = s.InTime, 
      OutTime = s.OutTime, 
      EmployeeName = s.Employee.Name, 
      EmployeeUsername = s.Employee.Username 
     }) 
     .ToList(); 
return Json(att); 

或者使用@尼诺的回答

尝试使用SqlFunctions.StringConvert; 像这样;

aa = DateTime.Parse(SqlFunctions.StringConvert(s.InTime)), //Error is not showing after removing this line