首页 新闻 会员 周边 捐助

entity framework 里实现 len ?

0
[已解决问题] 解决于 2012-07-20 16:47

sql语句是这样的:

select * from table order by len (c.num),c.num

 

结果:

id   num
1   a1
2   a2
3   a3
..........
10 a10

Y2zz的主页 Y2zz | 菜鸟二级 | 园豆:393
提问于:2012-07-20 16:23
< >
分享
最佳答案
0

from c in dbContext.table

order by c.num.Length,c.num

select c

奖励园豆:5
Launcher | 高人七级 |园豆:45050 | 2012-07-20 16:31

orderby(cc=>num) 这样的怎么写呢?

Y2zz | 园豆:393 (菜鸟二级) | 2012-07-20 16:34

orderby(cc=>cc.num.length) 没作用

Y2zz | 园豆:393 (菜鸟二级) | 2012-07-20 16:35

@Y屌丝: 你应该是这样写的:var results = dbContext.Table.Orderby(cc=>cc.num.Length); 对吗?如果是,你定一个断点,然后查看生成的SQL语句是什么。

Launcher | 园豆:45050 (高人七级) | 2012-07-20 16:48

@程序猿.码农: 嗯, 新问题来了 

Q.OrderBy(cc => cc.num.Length).OrderBy(cc => cc.num)

结果又和没排序是一样的了

Y2zz | 园豆:393 (菜鸟二级) | 2012-07-20 17:05

@Y屌丝: 还是请你查看一下生成的SQL语句是什么

Launcher | 园豆:45050 (高人七级) | 2012-07-20 17:15

@程序猿.码农: 好的

Y2zz | 园豆:393 (菜鸟二级) | 2012-07-20 17:32

@程序猿.码农: 看下这段

var Q = (from a in db.table orderby a.num.length,a.num);

// 这里有查询条件

// 分页
var count = Q.Count();
Q = Q.OrderBy().Skip(start).Take(limit);  // 如果加分页条件就必须要写OrderBy, 如果这里有OrderBy排序结果就不对, 头疼就头疼在这里...
var result = Q.ToList(); // 执行返回
Y2zz | 园豆:393 (菜鸟二级) | 2012-07-20 17:42

@Y屌丝: 你的 Q 先别 Count(),这样写:Q = Q.Skip(start).Take(limit);

或者:

var Q = (from a in db.table orderby a.num.length,a.num select a).Skip(start).Take(limit);

Launcher | 园豆:45050 (高人七级) | 2012-07-20 18:02

@程序猿.码农: 相当无奈的解决了

var Q = (from a in db.table orderby a.num.length,a.num);

// 这里有查询条件

// 分页
var count = Q.Count();
varresult = (from a in Q orderby a.InvoNO.Length, a.InvoNO select a).Skip(start).Take(limit).ToList(); // 执行返回
Y2zz | 园豆:393 (菜鸟二级) | 2012-07-20 18:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册