我是LINQ的新手,我在这里有点不太了解。我尝试在MSDN上搜索,但没有成功。我觉得可能有一个单行LINQ查询,我无法找到。
基本上,我有一个名为Student的班级和一个名为University的班级。每所大学都有一个Student []阵列。学生可以是多所大学的成员。
我也有一系列大学。我们的工作是构建一个LINQ查询,输出一个在多所大学注册的所有学生的数组。
我可以通过
轻松获得各大学所有不同学生[]数组的联合University[] universities //initialize
//fill universities with data
Student[] bigListOfStudents = universities.SelectMany(b => b.Students).ToArray();
然后我只需要抓住多次出现在数组中的bigListOfStudents
的所有元素。与.Distinct()
相反。 Wat do?
编辑:澄清,这里是基本的学生和大学课程。 Jmbag
是一个唯一的学生ID,用于比较Equals(Student s)
覆盖方法,以及生成哈希码,然后允许LINQ查询。
class Student
{
public string Name { get; set; }
public string Jmbag { get; set; }
public Student(string name, string jmbag)
{
Name = name;
Jmbag = jmbag;
}
public enum Gender
{
Male, Female
}
public static bool operator ==(Student student1, Student student2)
{
return student1.Jmbag == student2.Jmbag;
}
public static bool operator !=(Student student1, Student student2)
{
return student1.Jmbag != student2.Jmbag;
}
public override bool Equals(object obj)
{
if (GetType() == obj.GetType())
{
Student tempStudent = (Student)obj;
if (Jmbag == tempStudent.Jmbag)
{
return true;
}
}
return false;
}
public override int GetHashCode()
{
int hash = 0;
foreach(char c in Jmbag)
{
hash += c.GetHashCode();
}
return hash;
}
}
class University
{
public string Name { get; set; }
public Student[] Students { get; set; }
}