问一个关于C#投票排名的问题

问题描述

票数存在数据库表中,把票数取出放入list中,按降序排列,但是票数一样的情况怎么排名?比如第一个人是20票,第二个、第三个、第四个人都是10票,要让他们并列第二,怎么写程序?

解决方案

解决方案二:
我可以讲讲自己的思路,仅供你参考:1.先根据票数去重;2.然后根据降序排序,获取前面三个;3.最后一步,就是根据前三名的票数获取它在该表中的相关数据(数据可能是一条,也可能是多条,如果是多条的话,表示名次存在并列),一下代码仅供你参考。forList<Demo>demos=newList<Demo>();staticvoidMain(string[]args){List<Demo>demos=newList<Demo>();demos.Add(newDemo{Id=1,Count=5});demos.Add(newDemo{Id=2,Count=8});demos.Add(newDemo{Id=3,Count=23});demos.Add(newDemo{Id=4,Count=12});demos.Add(newDemo{Id=5,Count=12});demos.Add(newDemo{Id=6,Count=3});demos.Add(newDemo{Id=7,Count=7});demos.Add(newDemo{Id=8,Count=9});demos.Add(newDemo{Id=9,Count=15});demos.Add(newDemo{Id=10,Count=15});List<Demo>demoDistinct=newList<Demo>();demoDistinct.Add(newDemo{Id=1,Count=5});demoDistinct.Add(newDemo{Id=2,Count=8});demoDistinct.Add(newDemo{Id=3,Count=23});demoDistinct.Add(newDemo{Id=4,Count=12});demoDistinct.Add(newDemo{Id=5,Count=12});demoDistinct.Add(newDemo{Id=6,Count=3});demoDistinct.Add(newDemo{Id=7,Count=7});demoDistinct.Add(newDemo{Id=8,Count=9});demoDistinct.Add(newDemo{Id=9,Count=15});demoDistinct.Add(newDemo{Id=10,Count=15});List<Demo>otherList=newList<Demo>();//去重for(inti=0;i<demoDistinct.Count;i++)//外循环是循环的次数{for(intj=demoDistinct.Count-1;j>i;j--)//内循环是外循环一次比较的次数{if(demoDistinct[i].Count==demoDistinct[j].Count){demoDistinct.RemoveAt(j);}}}//降序排序,然后获取获得票数最多的三名otherList=demoDistinct.OrderByDescending(p=>p.Count).ToList();//第一名List<Demo>first=newList<Demo>();first=demos.Where(p=>p.Count==otherList[0].Count).ToList();//第二名List<Demo>second=newList<Demo>();second=demos.Where(p=>p.Count==otherList[1].Count).ToList();//第三名List<Demo>third=newList<Demo>();third=demos.Where(p=>p.Count==otherList[2].Count).ToList();}publicclassDemo{publicintId{get;set;}publicintCount{get;set;}}

解决方案三:
写简化点:staticvoidMain(string[]args){List<Demo>demos=newList<Demo>();demos.Add(newDemo{Id=1,Count=5});demos.Add(newDemo{Id=2,Count=8});demos.Add(newDemo{Id=3,Count=23});demos.Add(newDemo{Id=4,Count=12});demos.Add(newDemo{Id=5,Count=12});demos.Add(newDemo{Id=6,Count=3});demos.Add(newDemo{Id=7,Count=7});demos.Add(newDemo{Id=8,Count=9});demos.Add(newDemo{Id=9,Count=15});demos.Add(newDemo{Id=10,Count=15});List<Demo>demoDistinct=newList<Demo>();List<Demo>otherList=newList<Demo>();//demoDistinct是为了在下面去重用foreach(Demodemoindemos){demoDistinct.Add(demo);}//去重for(inti=0;i<demoDistinct.Count;i++)//外循环是循环的次数{for(intj=demoDistinct.Count-1;j>i;j--)//内循环是外循环一次比较的次数{if(demoDistinct[i].Count==demoDistinct[j].Count){demoDistinct.RemoveAt(j);}}}//降序排序,然后获取获得票数最多的三名otherList=demoDistinct.OrderByDescending(p=>p.Count).ToList();//第一名List<Demo>first=newList<Demo>();first=demos.Where(p=>p.Count==otherList[0].Count).ToList();//第二名List<Demo>second=newList<Demo>();second=demos.Where(p=>p.Count==otherList[1].Count).ToList();//第三名List<Demo>third=newList<Demo>();third=demos.Where(p=>p.Count==otherList[2].Count).ToList();}publicclassDemo{publicintId{get;set;}publicintCount{get;set;}}

解决方案四:
请先把你的数据结构写清楚,你的list中是如何表示“并列第二”的呢?
解决方案五:
对于通常的list而言,所谓“并列第二”根本不需要任何一行代码,就是按票数排序那么并列第二自然就排在第三名之前。关键是你现在是在假借编程术语(假设一个“list”字眼就是很时髦的编程术语的)弄一个与之不适配的概念。那么在你提这个问题之前,你应该先给别人说明“list中怎么表示’并列第二‘”这样才能得到靠谱的答案啊!
解决方案六:
既然是降序排列,和前一个数据比较不就行了么,和前一个票数相同,那么名次自然也相同
解决方案七:
降序后再进行票数的比较然后得出排名而不是直接根据顺序得出排名
解决方案八:
票数排序,然后根据票数显示就OK
解决方案九:
先排序,然后输出的时候与前面一个比一下,如果票数相同,等于前面一个的当前名次比如12245668这样

时间: 2024-10-03 13:05:12

问一个关于C#投票排名的问题的相关文章

web服务器-向大大们问一个 发送到WEB服务器数据的问题

问题描述 向大大们问一个 发送到WEB服务器数据的问题 想问下就是一个投票的页面,我用WSockExpert 把发往服务器的数据抓了下来,能不能通过什么方式自动再次发送到服务器,而且数据要有效增加.谢谢了! WSockExpert 数据如下: POST /mxhld/ajax_pj.aspx HTTP/1.1 x-requested-with: XMLHttpRequest Accept-Language: en-US Referer: http://zt.mxwz.com/mxhld/deta

java-新手问一个很奇怪的问题

问题描述 新手问一个很奇怪的问题 class Demo { int num = 1; int add = 2; Demo() { num = 5; add = 6; } void show() { System.out.println("Fu num="+num+" Fu add="+add); } } class DemoA extends Demo { DemoA() { this.num = 3; this.add = 4; } void show() { S

逻辑训练-问一个逻辑问题,关于离散数学的

问题描述 问一个逻辑问题,关于离散数学的 本人信息安全专业最近学到离散数学讲到一个蕴含关系想问问大家一个思维问题就图里画线部分.p 蕴含q 在日常生活中可以变成类似于只有 q才 p 这个要怎么理解它?利用集合来理解可以吗 解决方案 离散数学不太清楚了,就理解的话,应该可以使用集合来理解,p蕴含q,说明q是p的组成要素,如人是由各种器官组成的,比如心脏,只有心脏存在,才能存在人.也就是说q是p的必要不充分条件. 解决方案二: 离散数学不太清楚了,就理解的话,应该可以使用集合来理解,p蕴含q,说明q

代码-问一个win32application中,我创建了对话框,

问题描述 问一个win32application中,我创建了对话框, 在对话框中我拖进去编辑框控件,问题是如何使用编辑框,得到输进去的数字求求各位高手了,最好有具体代码,感激不尽!!! 解决方案 用GetDlgItem获取编辑框窗口句柄,用GetWindowText获取编辑框内容,用atoi等函数将字符串转换成整数或者用 GetDlgItemInt 解决方案二: 直接用GetDlgItemInt就可以了.不需要什么"G?e?t?DlgItem获取到控件,然后GetWindowText获取控件文本

pyqt-求问一个PyQt的问题,退出时候内存错误

问题描述 求问一个PyQt的问题,退出时候内存错误 1C 写了一个pyqt的程序,有多个tab页,其中一个tab页是通过matplotlib画图,当这个模块存在时,整个程序在退出的时候就会出现exit code -1073741819,这个是出现了内存错误.但是当我去掉这个模块时,程序不会出现这个问题.而且当我把其他的tab页注释掉,仅仅只有这模块的时候,也不会出问题.这说明,这应该是这个模块与其他的某个模块导致了问题. 于是我一个模块一个模块的注释,想找到到底哪个模块与这个画图的模块同时会导致

安卓-没有代码,我单纯的想问一个关于二维码的问题

问题描述 没有代码,我单纯的想问一个关于二维码的问题 就是说,我在视频上学会了在安卓手机上如何扫描二维码,但是我尝试着扫描一些广告的二维码,他返回的数据就是一个网址,但是我现在要实现的功能是: 每个学生都有自己的二维码,上面有他们的信息,我要制作一个扫二维码的功能来实现对他们二维码的扫描,然后将该学生的信息显示到手机上面,请问这个应该怎么实现呀,我应该再在程序里面加什么呢 解决方案 看你二维码里面是什么,如果是学员ID,你可以扫完之后去学校的学生系统里面去根据id去得到这个用户的信息,不知道对不

变量-问一个我自己都觉得低端的问题,有关js页面的,忘记怎么个原理了

问题描述 问一个我自己都觉得低端的问题,有关js页面的,忘记怎么个原理了 就是我在配置文件properties中定义了多个不同 key-value,然后页面上就用到了这个变量的key取到了value的值,搞不明白是怎么回事了,各位,帮解答一下吧 解决方案 你是用了插件吧. js通过ajax读取properties文件文本内容,回调函数中接收文件内容(即整个文件内容是一个大字符串),再对这个字符串做转换处理,最终转换为js对象 转换逻辑:根据换行符来拆分成数组(一行一个键值对),再对每一行数据根据

问一个el表达式的问题,是html页面中的,语言是java

问题描述 问一个el表达式的问题,是html页面中的,语言是java 我这样写判断是否为空,但是为什么就出错了 #if({empty user})当后台返回来的user为空时就出错了,页面打不开 解决方案 页面应该是 JSP页面吧 ~ <c:if test=""${empty user}""> user is empty or null. </c:if> <c:if test=""${not empty user}&

objective-c-ios 问一个关于crash日志 错误类型的问题

问题描述 ios 问一个关于crash日志 错误类型的问题 比如想问两个问题1.Exception Type: EXC_BAD_ACCESS 一般都是访问了一块已经被回收(不可用的内存)造成的 那Exception Type: EXC_CRASH (SIGABRT)Exception Codes: 0x0000000000000000 0x0000000000000000Exception Note: EXC_CORPSE_NOTIFY 这种EXC_CORPSE_NOTIFY.EXC_CRASH