Zac*_*ott 23 linq-to-entities tostring entity-framework-4
我有以下查询:
from a in Products
select new ProductVM
{
id = a.id,
modified = a.modified.ToString()
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:
LINQ to Entities does not recognize the method 'System.String ToString()'
method, and this method cannot be translated into a store expression.
Run Code Online (Sandbox Code Playgroud)
该modified
产品表的日期时间.将modified
在ProductVM类是字符串.
有任何想法吗?这必须是一个微不足道的问题.
Zac*_*ott 44
这是另一种选择:
.Select( p -> SqlFunctions.StringConvert((double)
SqlFunctions.DatePart("m", p.modified)).Trim() + "/" +
// SqlFunctions.DateName("mm", p.modified) + "/" + MS ERROR?
SqlFunctions.DateName("dd", p.modified) + "/" +
SqlFunctions.DateName("yyyy", p.modified)
Run Code Online (Sandbox Code Playgroud)
显然会DateName("MM", ..)
拼出月份名称,在那里DatePart("mm", ..)
提供一个数值,因此StringConvert( )
,这个左边用空格填充结果,因此.Trim()
.
Bro*_*ass 22
ToString()
Linq to Entities不支持 - 有一个函数助手列表作为SqlFunctions的一部分,但这不支持Date到字符串转换.
最简单的将是第一个项目在查询中的匿名类型,然后强制转换为IEnumerable
用AsEnumerable()
-之后,你可以用ToString()
,因为你现在使用LINQ为查询表达式的其余部分对象(有关于这个主题的长篇文章在这里).
var results = Products.Select( p => new { a.id, a.modified })
.AsEnumerable()
.Select(p => new ProductVM()
{ id = p.id,
modified = p.modified.ToString()
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24132 次 |
最近记录: |