C#中有结构体Student,包含属性string Grade等级、List<string> ChengJi 成绩 ,现在有List<Student>
时间: 2025-06-29 08:20:05 浏览: 3
### 处理C#中的`Student`结构体列表
在C#中,为了处理包含特定属性的`Student`结构体列表,可以先定义一个具有所需属性(如`Grade`和`ChengJi`)的`Student`结构。这里假设`Grade`代表学生的年级而`ChengJi`是一个自定义的成绩类。
#### 定义`ChengJi`类
考虑到成绩可能涉及多门课程总分计算的情况,在此之前应先定义一个用于保存各科成绩以及综合得分的`ChengJi`类:
```csharp
public class ChengJi {
public int YuWen { get; set; }
public int ShuXue { get; set; }
public int YingYu { get; set; }
public int ZongHe => YuWen + ShuXue + YingYu;
public ChengJi(int yuwen, int shuxue, int yingyu) {
this.YuWen = yuwen;
this.ShuXue = shuxue;
this.YingYu = yingyu;
}
}
```
#### 定义`Student`结构体
接着基于上述`ChengJi`类来构建`Student`结构体,并加入额外的`Grade`字段用来表示学生所在的年级:
```csharp
public struct Student {
public string Name { get; set; }
public int XueHao { get; set; }
public int Grade { get; set; } // 年级
public ChengJi Scores { get; set; }
public Student(string name, int xuehao, int grade, ChengJi scores) {
this.Name = name;
this.XueHao = xuehao;
this.Grade = grade;
this.Scores = scores;
}
}
```
#### 创建并操作`List<Student>`列表
有了这些准备后就可以轻松创建一个`List<Student>`类型的列表来进行进一步的操作了,比如添加新记录、遍历显示所有条目或是按照一定条件筛选数据等:
```csharp
using System.Collections.Generic;
using System.Linq;
// 初始化一些测试数据
var students = new List<Student>() {
new Student("张三", 202301, 8, new ChengJi(90, 87, 95)),
new Student("李四", 202302, 9, new ChengJi(88, 92, 86))
};
// 添加新的学生到列表里
students.Add(new Student("王五", 202303, 8, new ChengJi(92, 89, 94)));
// 使用LINQ查询八年级的学生们及其语文分数高于90的人数
int countAboveNinetyInChineseForEighthGraders =
(from s in students where s.Grade == 8 && s.Scores.YuWen > 90 select s).Count();
Console.WriteLine($"八年级中文超过90分的学生数量:{countAboveNinetyInChineseForEighthGraders}");
// 遍历打印所有学生的信息
foreach(var stu in students){
Console.WriteLine($"{stu.Name}({stu.XueHao}): 年级={stu.Grade}, 总合={stu.Scores.ZongHe}");
}
```
通过这种方式可以在C#程序中有效地管理和操作含有复杂属性的数据集[^2]。
阅读全文
相关推荐
















