C#按照List属性值排序,可以多重排序

要使用List,需添加引用:

using System.Collections.Generic;

    //定义成绩类
    public class score
    {
        public string stuName { get; set; }
        public int scoreYuwen { get; set; }
        public int scoreShuxue { get; set; }
        public int scoreTotal {
            get{return scoreYuwen+scoreShuxue;}           
        }
        public string sex { get; set; }
    }
    //定义排序类,继承IComparer接口,指定按哪个属性排序   
    public class paixu : IComparer<score>
    {
        public int Compare(score x, score y)
        {
            if (x.scoreTotal.CompareTo(y.scoreTotal) == 0)
            {
                //if (x.sex == "男") return 1; else return -1;//由小到大排
                if (x.sex == "男") return -1; else return 1;//由大到小排
            }
            else
            {
                //return x.scoreTotal.CompareTo(y.scoreTotal); //由小到大排
                return y.scoreTotal.CompareTo(x.scoreTotal); //由大到小排
            }
        }
    }

页面后台代码:

    public partial class testPage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            List<score> scores = initScores();
            scores = sortScore(scores);
            foreach (score sco in scores)
            {
                Response.Write(sco.stuName + sco.scoreTotal+"<br />");

            }
        }
        //主程序中写排序方法
        public List<score> sortScore(List<score> scores)
        {
            scores.Sort(new paixu());
            return scores;
        }

        //初始化数据
        public List<score> initScores()
        {
            List<score> scores = new List<score>();
            score myScore = new score();
            myScore.sex = "男";
            myScore.stuName = "张三";
            myScore.scoreShuxue = 90;
            myScore.scoreYuwen = 96;
            scores.Add(myScore);

            myScore = new score();
            myScore.sex = "男";
            myScore.stuName = "李四";
            myScore.scoreShuxue = 80;
            myScore.scoreYuwen = 70;
            scores.Add(myScore);

            myScore = new score();
            myScore.sex = "女";
            myScore.stuName = "王红";
            myScore.scoreShuxue = 70;
            myScore.scoreYuwen = 80;
            scores.Add(myScore);
            return scores;
        }
    }

 

 

 

 

 

 

posted @   泰乐看盘  阅读(1713)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示