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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)