首页 新闻 会员 周边

LINQ语句转换SQL

0
悬赏园豆:100 [已关闭问题] 关闭于 2010-11-09 09:28

大家好,有一个问题请教一下。

目前我用的是LINQ TO ENTITY3.5,想要用Linq 写出能在数据库中转换成以下这样的语句,难点在于cast

说明:column1 在数据库中是nvarchar 类型,映射linq 后是string类型,因为我排序的时候要按照int 类型排序,所以要转换成int ,否则排序时错误的

select * from column1 order by cast(column1 as int )

例如 var tt = from m in dt.test orderby Convert.ToInt32(m.column1) select m; -----是错误的

 

请假大家给我一个正确的linq 语句

问题补充: 大家帮帮忙啊,在线急等 哎,看来博客园是不行了,这个问题都答不出来
hhsimon的主页 hhsimon | 初学一级 | 园豆:5
提问于:2010-11-03 10:26
< >
分享
所有回答(3)
0

出现什么错误,是不是你的m.column1有NULL值什么的?

天神一 | 园豆:845 (小虾三级) | 2010-11-03 11:24
LINQ to Entities 不识别方法“UInt32 ToUInt32(System.String)”,因此该方法无法转换为存储表达式。
支持(0) 反对(0) hhsimon | 园豆:5 (初学一级) | 2010-11-03 11:41
0

感觉你的思路有些问题。字符串是 Unicode 字符的有序集合,Unicode 字符有对应的数值,而比较string 实际上也就是比较他们的对应的整数值;没必要做强制转换的。

HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-11-03 11:37
但是 实际结果来看,确实不是按照整数值来排序的 select * from column1 order by cast(column1 as int ) 这样才正确,哎,谢谢啊
支持(0) 反对(0) hhsimon | 园豆:5 (初学一级) | 2010-11-03 11:43
不转换 就会翻译成这样select * from table order by column1在SQL2005中执行的话,答案是错的,必须要cast(column1 as int )才正确
支持(0) 反对(0) hhsimon | 园豆:5 (初学一级) | 2010-11-03 11:48
0

建议改一下数据库表结构,即使找到办法,效率也是很低的

钧梓昊逑 | 园豆:945 (小虾三级) | 2010-11-03 12:08
我觉得nvarchar类型的不错,很好,不要改结构。 恳求 linq高手能帮忙解决此问题,我想这个问题也是大家普遍存在的
支持(0) 反对(0) hhsimon | 园豆:5 (初学一级) | 2010-11-04 16:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册