如何解决按平均考试成绩降序分组?
我需要 LINQ 方面的帮助,我需要根据计算的平均值对学生列表进行分组 有一个学生班:
public class Student
{
public string Name { get; set; } // student name
public int[] scores { get; set; } // test scores
}
我有一份包含数据的学生名单
List<Student> students = new List<Student>
{
new Student { Name = "Michael",scores = new int[] { 94,92,91,91 } },new Student { Name = "Isabelle",scores = new int[] { 66,87,65,93,86} },new Student { Name = "Chastity",scores = new int[] { 76,61,73,66,54} },new Student { Name = "Chaim",55,82,62,52} },new Student { Name = "Patience",scores = new int[] { 91,79,58,63,55} },new Student { Name = "Echo",scores = new int[] { 74,85,75,new Student { Name = "Pamela",scores = new int[] { 73,64,53,72,68} },new Student { Name = "Anne",scores = new int[] { 78,96,52,60} },new Student { Name = "Fuller",scores = new int[] { 59,68,88,76} },new Student { Name = "Cameron",scores = new int[] { 70,51,98} },new Student { Name = "aurora",scores = new int[] { 65,70,80,new Student { Name = "Anthony",scores = new int[] { 68,69,94,}
我需要范围的括号在测试分数括号中是 10 的倍数 • 50、60、70、80、90、100
输出应如下所示:
解决方法
我想是这样的吗?
结果:
--------------------------
90
Name: Michael
--------------------------
--------------------------
80
Name: Isabelle
Name: Echo
Name: Fuller
Name: Anthony
--------------------------
--------------------------
70
Name: Chastity
Name: Chaim
Name: Patience
Name: Pamela
Name: Anne
Name: Cameron
--------------------------
--------------------------
60
Name: Aurora
--------------------------
代码:
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp1
{
internal static class Program
{
private static void Main()
{
var students = new List<Student>
{
new() {Name = "Michael",Scores = new[] {94,92,91,91}},new() {Name = "Isabelle",Scores = new[] {66,87,65,93,86}},new() {Name = "Chastity",Scores = new[] {76,61,73,66,54}},new() {Name = "Chaim",55,82,62,52}},new() {Name = "Patience",Scores = new[] {91,79,58,63,55}},new() {Name = "Echo",Scores = new[] {74,85,75,new() {Name = "Pamela",Scores = new[] {73,64,53,72,68}},new() {Name = "Anne",Scores = new[] {78,96,52,60}},new() {Name = "Fuller",Scores = new[] {59,68,88,76}},new() {Name = "Cameron",Scores = new[] {70,51,98}},new() {Name = "Aurora",Scores = new[] {65,70,80,new() {Name = "Anthony",Scores = new[] {68,69,94,98}}
};
var groups = students.GroupBy(s => Math.Round(s.Scores.Average() / 10) * 10).OrderByDescending(s => s.Key);
foreach (var grouping in groups)
{
Console.WriteLine("--------------------------");
Console.WriteLine(grouping.Key);
foreach (var student in grouping)
{
Console.WriteLine(student);
}
Console.WriteLine("--------------------------");
Console.WriteLine();
}
}
}
public class Student
{
public string Name { get; set; }
public int[] Scores { get; set; }
public override string ToString()
{
return $"{nameof(Name)}: {Name}";
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。