linq内的DateTime.ToString(“MM / dd / yyyy”)抛出错误

时间:2018-06-09 01:05:43

标签: c# entity-framework linq

Linq中的

DateTime.ToString(“MM / dd / yyyy”)抛出错误。这是我的代码:

public IEnumerable<EmployeeViewModel> GetAllEmployees()
{
    List<EmployeeViewModel> vm = (
        from a in db.Employees
        select new EmployeeViewModel
        {
            EmployeeId = a.EmployeeId,
            EmployeeName = a.EmployeeName,
            HiredDateString = a.HiredDateTime.ToString("MM/dd/yyyy"),
            HiredTimeString = a.HiredDateTime.ToString("h:mm tt"),
            Description= a.Description
            }).ToList();
    return vm;
}

编辑:HiredDateString和HiredTimeString是ViewModel中的字符串。

我得到了以下错误:

<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
LINQ to Entities does not recognize the method 'System.String ToString(System.String)' method, and this method cannot be translated into a store expression.
</ExceptionMessage>
<ExceptionType>System.NotSupportedException</ExceptionType>

如果我只使用: a.HiredDateTime.ToString(),它不会抛出错误。但它给了我完整的DateTime字符串;我想分别获取日期和时间字符串。 非常感谢你的帮助。

1 个答案:

答案 0 :(得分:4)

你不能在linq表达式中使用日期时间格式。你应该这样:

HiredDateString = a.HiredDateTime,

,你应该在show时格式化这些数据。

例如在razor页面中:

foreach (var itemin vm )
            {
                @item.HiredDateString.ToString("MM/dd/yyyy")
            }