none
nvarchar类型的数字排序linq RRS feed

  • 问题

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

    目前我用的是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 语句 或者 告诉我如何用ef直接执行这样的语句select * from column1 order by cast(column1 as int )

    2011年1月4日 5:39

答案

  • Hello Hhsimon,

    欢迎来到MSDN论坛!

    对于你的这个问题,我在本地做了一些测试,没有找到直接用linq语句解决这个问题的方法。

    不过,你可以尝试一下这样做:先把所有的数据查出来,得到的集合.ToList()一下,将结果集放到list里面,然后写一个sort()方法,在sort()方法中将string Convert.ToInt32(),现在这只是个想法,接下来的时间我会自己调试一下。如果有结果的话我会及时在论坛里跟你说的!希望你也能试一下。

    希望会对你有帮助!

    谢谢,

     


    Jackie Sun [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 hhsimon 2011年1月17日 2:34
    2011年1月5日 10:02
    版主

全部回复

  • Hello Hhsimon,

    欢迎来到MSDN论坛!

    对于你的这个问题,我在本地做了一些测试,没有找到直接用linq语句解决这个问题的方法。

    不过,你可以尝试一下这样做:先把所有的数据查出来,得到的集合.ToList()一下,将结果集放到list里面,然后写一个sort()方法,在sort()方法中将string Convert.ToInt32(),现在这只是个想法,接下来的时间我会自己调试一下。如果有结果的话我会及时在论坛里跟你说的!希望你也能试一下。

    希望会对你有帮助!

    谢谢,

     


    Jackie Sun [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 hhsimon 2011年1月17日 2:34
    2011年1月5日 10:02
    版主
  • 大家好,有一个问题请教一下。

    目前我用的是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 语句 或者 告诉我如何用ef直接执行这样的语句select * from column1 order by cast(column1 as int )

    你的column1 内是否含有不能转化成int类型的字符串?

    我刚刚测试了一下 

     var tt = from m in dt.test orderby Convert.ToInt32(m.column1)  select m; 

    or 

    var tt= dt.test.OrderBy(m=>Convert.ToInt32(m.column1) );

     

    都是可以的!


    My CSDN HomePage
    2011年1月10日 3:37
  • 你好,谢谢你的回答,可能你用的是linq2Sql吧。

    我这里会报出异常:

    base {System.Exception} = {"LINQ to Entities 不识别方法“Int32 ToInt32(System.String)”,因此该方法无法转换为存储表达式。"}


    Thanks! I'm hhsimon
    2011年1月17日 2:32
  • 谢谢你的回答,我后来也是采用你这种方式来做的。希望ef能更强大,今后可以方便点。
    Thanks! I'm hhsimon
    2011年1月17日 2:33