entity-framework-4 - Entity Framework 4/Linq : How to convert from DateTime to string in a query?

标签 entity-framework-4 linq-to-entities tostring

我有以下查询:

from a in Products
select new ProductVM
    {
         id = a.id,
         modified = a.modified.ToString()
    }

这给了我一个错误:
LINQ to Entities does not recognize the method 'System.String ToString()'
method, and this method cannot be translated into a store expression.
modified在产品表中是日期时间。modified在 ProductVM 类中是字符串。

有任何想法吗?这必须是一个微不足道的问题。

最佳答案

ToString() Linq to Entities 不支持 - 有一个函数助手列表作为 SqlFunctions 的一部分但这不支持日期到字符串的转换。

最简单的方法是首先在查询中投影到匿名类型,然后转换为 IEnumerable通过使用 AsEnumerable() - 之后你可以使用 ToString()因为您现在将 Linq to Objects 用于查询表达式的其余部分(关于此主题的文章很长 here)。

   var results = Products.Select( p => new { a.id, a.modified })
                         .AsEnumerable()
                         .Select(p => new ProductVM() 
                                { id = p.id, 
                                  modified = p.modified.ToString() 
                                });

关于entity-framework-4 - Entity Framework 4/Linq : How to convert from DateTime to string in a query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5370402/

相关文章:

c# - Entity Framework 中的继承 - 每个具体类的表?

linq-to-entities - LINQ to Entities 无法识别 ElementAt[WebSecurity.CurrentUserId] 方法

entity-framework-4 - Entity Framework 和 DDD

java - toString 的显式与隐式调用

php - 检查项目是否可以转换为字符串?

asp.net-mvc - 构建新的大型 ASP.NET MVC2 plus EF4 VS2010 解决方案的最佳实践?

entity-framework-4 - 添加到父实体时是否会自动跟踪子实体?

java - ArrayList 类中的 toString() 是否被重写

c# - Entity Framework 虚拟属性

c# - 将 LINQ 结果存储在全局变量中的最佳类型