首页新闻找找看学习计划

C#中 linq对dt中的某列排序

0
悬赏园豆:30 [已解决问题] 解决于 2016-07-18 14:25

这样写的话,是取不到数据的。求大神帮忙

1  var list1 = from c in dt.AsEnumerable()
2                             //where c["交车数"].Equals("交车数")
3                             orderby c["交车数"] descending
4                             select c;
5  s = RDBIHandler.DtbToJson(list1.CopyToDataTable()).ToString();
6                 
二月二十号的主页 二月二十号 | 初学一级 | 园豆:46
提问于:2015-12-24 09:55
< >
分享
最佳答案
0

大哥,你这样不行的吧,datatable这个结构很复杂,要么你用dt自带的功能排序,要么你就把它转成你的实体类然后用linq排序,你说一种,我给你写个。

收获园豆:20
ensleep | 小虾三级 |园豆:1391 | 2015-12-24 15:17

算了,还不知道你什么时候回复呢,看你的样子是最终想得到一个DataTable。那我就用DataTable的排序写吧。

 

DataRow[] rows = dataTable1.Select("", "交车数 desc");
 
DataTable t = DataTable1.Clone();
 
t.Clear();
 
foreach (DataRow row in rows)
 
    t.ImportRow(row);
 
DataTable1 = t;

最后的DataTable1就是你要得到的排序后的数据。

说一下这样的原因,我们对DataTable用select 的时候得到的是DataRow[],不同结构的DataTable的DataRow是不一样的,所以,不能通用,所以我们需要复制一个原DataTable的结构(即使用Clone方式),然后再将之前得到的DataRow[]给这个Clone出来的与原DataTable结构一致的DataTable1就可以了。

ensleep | 园豆:1391 (小虾三级) | 2015-12-24 15:23
其他回答(2)
0

跟排序没关系吧,调试看下list1的值

收获园豆:5
jello chen | 园豆:7091 (大侠五级) | 2015-12-24 13:49
0

先把list1用ToList()之类的方法,确定有没有值吧!

收获园豆:5
狂乱の貴公子 | 园豆:262 (菜鸟二级) | 2015-12-25 14:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册