现在有一学生成绩表,现在想通过总分生成成绩排名,有没有好点的办法?表结构如下:学号 姓名 语文 数学 物理 化学 ... 总分
1000 A    30   50    60  70       210
1001 B    42   63    87  90       300
1002 C    60   50    54  80       280  
...

解决方案 »

  1.   

    你的表是数据库里的表还是EXCEL里的表
      

  2.   

    用select * from tablename order by 总分 desc读取出来
      

  3.   

    select * from 成绩表 order by 总分
      

  4.   

    select * from 表 order by 总分
    后边可加asc 和 desc 分别表示升序,降序
      

  5.   

    楼上都正解,还可以用DataView的Sort属性来实现
    DataView view = DataTable1.DefaultView;
    // By default, the first column sorted ascending.
    view.Sort = "State, ZipCode DESC";//DESC为降序,State、ZipCode为排序字段
      

  6.   

    select (语文+ 数学+ 物理 +化学) as sum from  成绩表 order by sum desc
      

  7.   

    可能我说的有点模糊,我的原意并不是上面个为所讲的,这个表数据是从数据库几个表中抽出来用程序控制得到的DataTable,现在想通过这个DataTable的"总分"列来生成成绩排名,就是想不出来的这个"排名"该用何种算法得到
      

  8.   

    可以建一个视图,然后再放到DataTable中,把所有的计算放在数据库服务器那里
      

  9.   

    楼主,
        也就是说,你把数据已经都到缓存里面了,不想通过数据库排序去完成排序??
    如果是这样,你真的有点舍近求远了,RBX8Z() 说得很好,你创建一个视图,再按要求排,
    问题就能很简单解决,你在界面显示的时候也方便。
       如果你不想用视图的办法,那也有解决办法,用DataTable的Select:   DataTable table = DataSet1.Tables["总分表"];
       string strFilter= "";
       string strOrder = "总分 DESC";
       DataRow[] foundRows   foundRows = table.Select(strFilter, strOrder );现在,foundRows 就是你要的结果。
      

  10.   

    用DataView也可以。
    DataView.Sort=" 总分 desc"
      

  11.   

    对,用DataView可能更简单些:
        DataView dv= new DataView(table);
        dv.Sort=" 总分 desc";
    那么,dv就是你要的结果。