C# 如何从这个C代码中找到结果 //这里将定义10个对象 学生s1=新生{}; s1.id=101; s1.name=“安迪”; s1.subject=“BIS101”; s1.得分=89分; 学生s2=新生{}; s2.id=101; s2.name=“安迪”; s2.subject=“BIS102”; s2.0分=95分; 学生s3=新生{}; s3.id=102; s3.name=“Katty”; s3.subject=“BIS103”; s3.得分=70分; 学生s4=新生{}; s4.id=103; s4.name=“Aimy”; s4.subject=“BIS101”; s4.得分=70分; 学生s5=新生{}; s5.id=104; s5.name=“Kody”; s5.subject=“BIS102”; s5.得分=60分; 学生s6=新生{}; s6.id=104; s6.name=“Kody”; s6.subject=“BIS103”; s6.得分=70分; 学生s7=新生{}; s7.id=103; s7.name=“Aimy”; s7.subject=“BIS103”; s7.得分=50分; 学生s8=新生{}; s8.id=102; s8.name=“Kathy”; s8.subject=“BIS102”; s8.得分=40分; 学生s9=新生{}; s9.id=105; s9.name=“Pretty”; s9.subject=“BIS103”; s9.得分=50分; 学生s10=新生{}; s10.id=105; s10.name=“Pretty”; s10.subject=“BIS101”; s10.得分=60分; //创建一个新的篮子 List list1=新列表(); //把这些东西放进篮子里 列表1.添加(s1);列表1.添加(s2);列表1.添加(s3);列表1.添加(s4); 列表1.添加(s5);附表1.增补(中六);列表1.添加(s7);列表1.添加(s8); 列表1.添加(s9);列表1.添加(s10);
从这段代码中,我如何找到已经注册了两门课程的学生??我一直在努力解决这个问题,我是一个新手,所以我不能再进一步了 任何帮助都将不胜感激C# 如何从这个C代码中找到结果 //这里将定义10个对象 学生s1=新生{}; s1.id=101; s1.name=“安迪”; s1.subject=“BIS101”; s1.得分=89分; 学生s2=新生{}; s2.id=101; s2.name=“安迪”; s2.subject=“BIS102”; s2.0分=95分; 学生s3=新生{}; s3.id=102; s3.name=“Katty”; s3.subject=“BIS103”; s3.得分=70分; 学生s4=新生{}; s4.id=103; s4.name=“Aimy”; s4.subject=“BIS101”; s4.得分=70分; 学生s5=新生{}; s5.id=104; s5.name=“Kody”; s5.subject=“BIS102”; s5.得分=60分; 学生s6=新生{}; s6.id=104; s6.name=“Kody”; s6.subject=“BIS103”; s6.得分=70分; 学生s7=新生{}; s7.id=103; s7.name=“Aimy”; s7.subject=“BIS103”; s7.得分=50分; 学生s8=新生{}; s8.id=102; s8.name=“Kathy”; s8.subject=“BIS102”; s8.得分=40分; 学生s9=新生{}; s9.id=105; s9.name=“Pretty”; s9.subject=“BIS103”; s9.得分=50分; 学生s10=新生{}; s10.id=105; s10.name=“Pretty”; s10.subject=“BIS101”; s10.得分=60分; //创建一个新的篮子 List list1=新列表(); //把这些东西放进篮子里 列表1.添加(s1);列表1.添加(s2);列表1.添加(s3);列表1.添加(s4); 列表1.添加(s5);附表1.增补(中六);列表1.添加(s7);列表1.添加(s8); 列表1.添加(s9);列表1.添加(s10);,c#,C#,从这段代码中,我如何找到已经注册了两门课程的学生??我一直在努力解决这个问题,我是一个新手,所以我不能再进一步了 任何帮助都将不胜感激 提前谢谢 这里有一个相当简单的LINQ查询,可以找到您想要的: //10 objects will be defined here Students s1 = new Students{}; s1.id = 101; s1.name= "Andy"; s1.subject = "BIS101"; s1.score = 89; Students s2
提前谢谢 这里有一个相当简单的LINQ查询,可以找到您想要的:
//10 objects will be defined here
Students s1 = new Students{};
s1.id = 101;
s1.name= "Andy";
s1.subject = "BIS101";
s1.score = 89;
Students s2 = new Students{};
s2.id = 101;
s2.name= "Andy";
s2.subject = "BIS102";
s2.score = 95;
Students s3 = new Students{};
s3.id = 102;
s3.name= "Katty";
s3.subject = "BIS103";
s3.score = 70;
Students s4 = new Students{};
s4.id = 103;
s4.name= "Aimy";
s4.subject = "BIS101";
s4.score = 70;
Students s5 = new Students{};
s5.id = 104;
s5.name= "Kody";
s5.subject = "BIS102";
s5.score = 60;
Students s6 = new Students{};
s6.id = 104;
s6.name= "Kody";
s6.subject = "BIS103";
s6.score = 70;
Students s7 = new Students{};
s7.id = 103;
s7.name= "Aimy";
s7.subject = "BIS103";
s7.score = 50;
Students s8 = new Students{};
s8.id = 102;
s8.name= "Kathy";
s8.subject = "BIS102";
s8.score = 40;
Students s9 = new Students{};
s9.id = 105;
s9.name= "Pretty";
s9.subject = "BIS103";
s9.score = 50;
Students s10 = new Students{};
s10.id = 105;
s10.name= "Pretty";
s10.subject = "BIS101";
s10.score = 60;
//create a new basket
List<Students> list1 = new List<Students>();
//add those objects into basket
list1.Add(s1);list1.Add(s2);list1.Add(s3);list1.Add(s4);
list1.Add(s5);list1.Add(s6);list1.Add(s7);list1.Add(s8);
list1.Add(s9);list1.Add(s10);
或者,您也可以通过循环:
list1.GroupBy(s => s.id).Where(s => s.Count() == 2);
这意味着对于任何学生来说,你只需:
public class Course
{
public string Name { get; set; }
public int Score { get; set; }
}
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public List<Course> Courses { get; set; }
}
下面是一个相当简单的LINQ查询,用于查找所需内容:
//10 objects will be defined here
Students s1 = new Students{};
s1.id = 101;
s1.name= "Andy";
s1.subject = "BIS101";
s1.score = 89;
Students s2 = new Students{};
s2.id = 101;
s2.name= "Andy";
s2.subject = "BIS102";
s2.score = 95;
Students s3 = new Students{};
s3.id = 102;
s3.name= "Katty";
s3.subject = "BIS103";
s3.score = 70;
Students s4 = new Students{};
s4.id = 103;
s4.name= "Aimy";
s4.subject = "BIS101";
s4.score = 70;
Students s5 = new Students{};
s5.id = 104;
s5.name= "Kody";
s5.subject = "BIS102";
s5.score = 60;
Students s6 = new Students{};
s6.id = 104;
s6.name= "Kody";
s6.subject = "BIS103";
s6.score = 70;
Students s7 = new Students{};
s7.id = 103;
s7.name= "Aimy";
s7.subject = "BIS103";
s7.score = 50;
Students s8 = new Students{};
s8.id = 102;
s8.name= "Kathy";
s8.subject = "BIS102";
s8.score = 40;
Students s9 = new Students{};
s9.id = 105;
s9.name= "Pretty";
s9.subject = "BIS103";
s9.score = 50;
Students s10 = new Students{};
s10.id = 105;
s10.name= "Pretty";
s10.subject = "BIS101";
s10.score = 60;
//create a new basket
List<Students> list1 = new List<Students>();
//add those objects into basket
list1.Add(s1);list1.Add(s2);list1.Add(s3);list1.Add(s4);
list1.Add(s5);list1.Add(s6);list1.Add(s7);list1.Add(s8);
list1.Add(s9);list1.Add(s10);
或者,您也可以通过循环:
list1.GroupBy(s => s.id).Where(s => s.Count() == 2);
这意味着对于任何学生来说,你只需:
public class Course
{
public string Name { get; set; }
public int Score { get; set; }
}
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public List<Course> Courses { get; set; }
}
您可以为此使用Linq:
list1.Where(s => s.Courses.Length == 2);
你也应该考虑重做你的类抽象,以便<代码>学生< /C>对象保存课程列表。您现在的抽象很混乱,因为
Student
类的多个实例实际上代表同一个学生
我还建议您看看,这将有助于清理这段代码很多
有了新的抽象和初始化语法的使用,您的实例可能看起来像:
list1.GroupBy(s => s.id).Where(g => g.Count() == 2);
您可以为此使用Linq:
list1.Where(s => s.Courses.Length == 2);
你也应该考虑重做你的类抽象,以便<代码>学生< /C>对象保存课程列表。您现在的抽象很混乱,因为
Student
类的多个实例实际上代表同一个学生
我还建议您看看,这将有助于清理这段代码很多
有了新的抽象和初始化语法的使用,您的实例可能看起来像:
list1.GroupBy(s => s.id).Where(g => g.Count() == 2);
有两种方法可以找到答案: 首先,你必须了解如何做你需要的事情 您需要了解至少有2门课程的学生。
您拥有的是10个学生对象,它们可以引用同一个学生但不同的课程。
定义同一学生的方式取决于有多少门课程:您需要开始计算单个学生是否有一个具有相同ID或名称的学生对象,以确定该学生是同一个学生,并且具有不同的课程属性;可以为每个学生对象创建一个循环 然后有一个“检查表”:如果你没有看到他的名字,那么你把他加入名单,数一个课程;如果名称不同,则向列表中添加另一个名称,并向该名称添加1个课程;如果该名称已在您的列表中,则在要检查的名称中添加1个课程。在10名学生之后,你的检查表将有安迪2、凯蒂2、艾米2、柯迪2、美丽2;然后你需要检查你的检查表,看看是否有2门或更多的课程符合你的标准 编程时,试着把你的问题分开,看看你有什么,你需要什么,并试着把每一步尽可能地分开;这些被称为算法 您可以从如何理解开始,然后进入最佳代码选项,如Justin Niessner的最后答案(高级答案): 您有您的列表(每个学生),它将按id分组,因此具有相同id的每个元素将“在一起”,其中表示您需要的条件,s.count表示主题为“BIS103”和“BIS101”的“漂亮”元素,元素计数为2,因此,它符合
Where(2>1)
标准
正如你所说,你是一个新手,我试图解释这一点,因为我记得从学校。你有两种方法得到答案: 首先,你必须了解如何做你需要的事情 您需要了解至少有2门课程的学生。
您拥有的是10个学生对象,它们可以引用同一个学生但不同的课程。
定义同一学生的方式取决于有多少门课程:您需要开始计算单个学生是否有一个具有相同ID或名称的学生对象,以确定该学生是同一个学生,并且具有不同的课程属性;可以为每个学生对象创建一个循环 然后有一个“检查表”:如果你没有看到他的名字,那么你把他加入名单,数一个课程;如果名称不同,则向列表中添加另一个名称,并向该名称添加1个课程;如果该名称已在您的列表中,则在要检查的名称中添加1个课程。在10名学生之后,你的检查表将有安迪2、凯蒂2、艾米2、柯迪2、美丽2;然后你需要检查你的检查表,看看是否有2门或更多的课程符合你的标准 在编程时,试着把你的问题分开,看看你有什么,你需要什么,并试着把每一步都分开,尽可能多地用c