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