110,530
社区成员
发帖
与我相关
我的任务
分享
var d = new[]
{
new {班级="一班", 学生姓名="学生A", 成绩1=99, 成绩2=88, 成绩3=95},
new {班级="一班", 学生姓名="学生B", 成绩1=86, 成绩2=95, 成绩3=100},
new {班级="一班", 学生姓名="学生C", 成绩1=81, 成绩2=82, 成绩3=93},
new {班级="一班", 学生姓名="学生D", 成绩1=97, 成绩2=94, 成绩3=97},
new {班级="一班", 学生姓名="学生E", 成绩1=86, 成绩2=80, 成绩3=85},
new {班级="一班", 学生姓名="学生F", 成绩1=99, 成绩2=96, 成绩3=87},
new {班级="二班", 学生姓名="学生A", 成绩1=93, 成绩2=95, 成绩3=94},
new {班级="二班", 学生姓名="学生B", 成绩1=85, 成绩2=81, 成绩3=94},
new {班级="二班", 学生姓名="学生C", 成绩1=94, 成绩2=84, 成绩3=84},
new {班级="二班", 学生姓名="学生D", 成绩1=96, 成绩2=90, 成绩3=99},
new {班级="二班", 学生姓名="学生E", 成绩1=88, 成绩2=92, 成绩3=92},
new {班级="二班", 学生姓名="学生F", 成绩1=88, 成绩2=94, 成绩3=96},
new {班级="二班", 学生姓名="学生G", 成绩1=80, 成绩2=100, 成绩3=83},
new {班级="二班", 学生姓名="学生H", 成绩1=97, 成绩2=87, 成绩3=96},
new {班级="二班", 学生姓名="学生I", 成绩1=82, 成绩2=87, 成绩3=85},
new {班级="二班", 学生姓名="学生J", 成绩1=95, 成绩2=82, 成绩3=89},
new {班级="二班", 学生姓名="学生K", 成绩1=99, 成绩2=83, 成绩3=94},
new {班级="二班", 学生姓名="学生L", 成绩1=92, 成绩2=93, 成绩3=96},
new {班级="三班", 学生姓名="学生D", 成绩1=87, 成绩2=96, 成绩3=90},
new {班级="三班", 学生姓名="学生E", 成绩1=98, 成绩2=85, 成绩3=91},
new {班级="三班", 学生姓名="学生F", 成绩1=99, 成绩2=98, 成绩3=99},
new {班级="三班", 学生姓名="学生G", 成绩1=87, 成绩2=93, 成绩3=88},
new {班级="三班", 学生姓名="学生H", 成绩1=88, 成绩2=93, 成绩3=86},
new {班级="三班", 学生姓名="学生I", 成绩1=100, 成绩2=80, 成绩3=92},
new {班级="三班", 学生姓名="学生J", 成绩1=84, 成绩2=97, 成绩3=92},
new {班级="三班", 学生姓名="学生K", 成绩1=98, 成绩2=80, 成绩3=93},
new {班级="三班", 学生姓名="学生L", 成绩1=84, 成绩2=85, 成绩3=92},
new {班级="三班", 学生姓名="学生M", 成绩1=80, 成绩2=100, 成绩3=84},
new {班级="三班", 学生姓名="学生N", 成绩1=94, 成绩2=80, 成绩3=94},
};
var r = d.GroupBy(x => x.班级).Select(g => g.OrderByDescending(x => x.成绩1).Select((x, i) => new { 班级 = g.Key, 学生姓名 = x.学生姓名, 成绩1=x.成绩1, 排名 = i }));
foreach (var x in r) foreach(var y in x) Console.WriteLine(y);
public class Info
{
public int ClassNum { get; set; }
public string StuName { get; set; }
public int PointA { get; set; }
public int PointB { get; set; }
public int PointC { get; set; }
}
List<Info> items = new List<Info>()
{
new Info() {ClassNum = 1,StuName ="张1",PointA = 90,PointB = 100,PointC = 60 },
new Info() {ClassNum = 1,StuName ="张2",PointA = 89,PointB = 70,PointC = 70 },
new Info() {ClassNum = 1,StuName ="张3",PointA = 80,PointB = 80,PointC = 80 },
new Info() {ClassNum = 2,StuName ="李1",PointA = 91,PointB = 60,PointC = 80 },
new Info() {ClassNum = 2,StuName ="李2",PointA = 92,PointB = 80,PointC = 70 },
new Info() {ClassNum = 2,StuName ="李3",PointA = 93,PointB = 90,PointC = 55 },
new Info() {ClassNum = 2,StuName ="李4",PointA = 94,PointB = 30,PointC = 65 },
new Info() {ClassNum = 3,StuName ="王1",PointA = 66,PointB = 99,PointC = 77 },
new Info() {ClassNum = 3,StuName ="王2",PointA = 77,PointB = 11,PointC = 88 },
new Info() {ClassNum = 3,StuName ="王3",PointA = 88,PointB = 22,PointC = 55 },
};
var classgroup = items.GroupBy(x => x.ClassNum);
{
//A
var a1 = classgroup.FirstOrDefault(x => x.Key == 1).OrderByDescending(x => x.PointA);
var a2 = classgroup.FirstOrDefault(x => x.Key == 2).OrderByDescending(x => x.PointA);
var a3 = classgroup.FirstOrDefault(x => x.Key == 3).OrderByDescending(x => x.PointA);
}
{
//B
var b1 = classgroup.FirstOrDefault(x => x.Key == 1).OrderByDescending(x => x.PointB);
var b2 = classgroup.FirstOrDefault(x => x.Key == 2).OrderByDescending(x => x.PointB);
var b3 = classgroup.FirstOrDefault(x => x.Key == 3).OrderByDescending(x => x.PointB);
}
{
//C
var c1 = classgroup.FirstOrDefault(x => x.Key == 1).OrderByDescending(x => x.PointC);
var c2 = classgroup.FirstOrDefault(x => x.Key == 2).OrderByDescending(x => x.PointC);
var c3 = classgroup.FirstOrDefault(x => x.Key == 3).OrderByDescending(x => x.PointC);
}
private static void Test()
{
IList<Model> modelList = new List<Model>
{
new Model
{
ClassName = "一班",
StudentName = "学生A",
Score1 = 99,
Score2 = 88,
Score3 = 95
},
new Model
{
ClassName = "一班",
StudentName = "学生B",
Score1 = 86,
Score2 = 95,
Score3 = 100
},
new Model
{
ClassName = "一班",
StudentName = "学生C",
Score1 = 81,
Score2 = 82,
Score3 = 93
},
new Model
{
ClassName = "二班",
StudentName = "学生D",
Score1 = 96,
Score2 = 90,
Score3 = 99
},
new Model
{
ClassName = "二班",
StudentName = "学生E",
Score1 = 86,
Score2 = 80,
Score3 = 85
},
new Model
{
ClassName = "二班",
StudentName = "学生F",
Score1 = 85,
Score2 = 80,
Score3 = 94
},
new Model
{
ClassName = "三班",
StudentName = "学生G",
Score1 = 96,
Score2 = 90,
Score3 = 99
},
new Model
{
ClassName = "三班",
StudentName = "学生H",
Score1 = 87,
Score2 = 93,
Score3 = 88
},
new Model
{
ClassName = "三班",
StudentName = "学生M",
Score1 = 80,
Score2 = 100,
Score3 = 84
},
new Model
{
ClassName = "三班",
StudentName = "学生N",
Score1 = 94,
Score2 = 80,
Score3 = 94
}
};
//得到所有班级名
List<string> cassNameList = modelList.Select(x => x.ClassName).Distinct().ToList();
//三个科目倒序
Dictionary<IOrderedEnumerable<Model>, string> allList = new Dictionary<IOrderedEnumerable<Model>, string>
{
{modelList.OrderByDescending(t => t.Score1), "科目1"},
{modelList.OrderByDescending(t => t.Score2), "科目2"},
{modelList.OrderByDescending(t => t.Score3), "科目3"}
};
foreach (var item in allList)
{
cassNameList.ForEach(oo =>
{
Console.Write($"{item.Value}{oo}成绩排名是");
item.Key.Where(t => t.ClassName == oo).ToList().ForEach(t =>
{
Console.Write($"{t.StudentName}");
});
Console.Write(",");
});
Console.Write(";");
Console.WriteLine();
}
}
private class Model
{
/// <summary>
/// 班级名称
/// </summary>
public string ClassName { get; set; }
/// <summary>
/// 学生名称
/// </summary>
public string StudentName { get; set; }
/// <summary>
/// 成绩1
/// </summary>
public double Score1 { get; set; }
/// <summary>
/// 成绩2
/// </summary>
public double Score2 { get; set; }
/// <summary>
/// 成绩3
/// </summary>
public double Score3 { get; set; }
}