2012-08-02 98 views
2

linq表达式有问题。 我想从db中获取按datetime排序的一些数据。早在那时就有字符串字段排序了。 排序表达(通过字符串):EF排序问题

Expression<Func<Matter, Object>> result = e => e.MatterNumber; 
//In debug mode: {e => e.MatterNumber} 

工作正常

排序表达(通过日期时间或强度):

Expression<Func<Matter, Object>> result = e => e.Created; 
//In debug mode: {{e => Convert(e.Created)}} 

此上升一个错误:{“无法转换的类型'System.Int32'键入'System.Object'.LINQ to Entities只支持铸造实体数据模型原始类型。“}

请帮助:)

+0

为什么你不只是使用'OrderBy'? – James 2012-08-02 12:03:19

+0

@James遗留项目体系结构;) – 2012-08-02 12:06:57

+0

您可能希望用您所针对的.NET框架版本来标记您的问题。你能否显示你正在使用你的表达式的完整查询? – James 2012-08-02 12:10:13

回答

1

阿列克谢,你可能会想看一看这太问题:

Entity Framework: LINQ to Entities only supports casting Entity Data Model primitive types

或这一个位置:

Help me understand "LINQ to Entities only supports casting Entity Data Model primitive types"

终于在SO:

Entityframework 4.0 .CreateQuery<T> and OrderBy exception

,并在forums.asp.net:

http://forums.asp.net/t/1580414.aspx/1

所有4个处理这个问题稍微不同的方式,但希望能在您的情况有所帮助。

+0

好工作!谢谢@jim! – 2012-08-02 12:33:26

+0

hey alexei - 这是一种乐趣,我之前在EF仓库实施中使用过这些参考文献,所以认为它们可能有用 – 2012-08-02 12:35:37