最近在写一个排名的程序,排名投票的时候也没有限制用户,也就是说可以匿名的方式投给任何人,数据库中的数据很杂,有很多相同的人名,现在老大要求,把相同的人名进行筛选,只保留一个,但是其它同名的人的票数要进行累加到保留的那一个上边,最后选出前10名;
我想把它们全部统计后,筛选累加,然后存放到一个二维数组中,然后对这个二维数组进行排序,取出前10名,可对二维数组不是很会,现在是搞了好久,也没搞定,所以,现在来请教大家了,希望大家帮帮小弟,先谢谢了大概的数据是这样:
string[,] arr={{"小张","450"},{"大兴","513"},{"陈海","412"}...}

解决方案 »

  1.   

    可以在数据库中实现,很简单的
    select top 10 * from (
    select [name],sum(voteNum)newNum from tb
    where [name]=[name] 
    group by [name])tt
    order by newNum DESC
      

  2.   

    如果是数据更新量很大,可以建一新表,再创建一更新触发器。
    这样以后要用的时候,可以直接
    select top 10 * from newtable order by newNum desc
      

  3.   

    select top 10 name, sum(ticket) as tick_sum from tick group by name order by tick_sum desc
      

  4.   

    建议用DataTable来实现[email protected] 
      

  5.   

    呵呵。既然名字都被筛选的不重复了。
    用Hashtable做啊,名字是键,票数为值!
      

  6.   

    是工整的二维数组,原理根据冒泡排序来实现  
    循环方式  根据 arr[0,1],arr[1,1],arr[2,1],arr[3,1]....以此类推
    判断条件 是 arr[0,1] 装换成INT进行比较,然后换位排序
      

  7.   


    Hashtable studentIdScoreTable = new Hashtable(); studentIdScoreTable.Add(“小张”, 100); 
         .
         .
         .
         .ArrayList studentScore = new ArrayList(studentIdScoreTable.Values); studentScore.Sort();  
      

  8.   

    何必要排序,5楼都已经给出了最简单SQL处理方法,为什么还有这么多人给出更复杂的方法?
      

  9.   

    Array.sort 是万能的,只要自己重新写比较方法
    建议,写一个Item类,包含 Name,Value
    然后每张票可以视为一个Item
    写一个比较方法,之比较Value即可
    使用Array.sort 比较