我有以下查询:
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/