如何使用
我有两个不同的集合,如下所示
public class Student
{
public int StudentID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Skills
{
public int SkillID { get; set; }
public int StudentID { get; set; }
public string Keyskill_Name { get; set; }
public int LastUsedYear { get; set; }
}
在这里,一个学生可以包含多个键
我只想填写如下所示的新集合
public class StudentDetails
{
public int StudentID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public list<string> Keyskill_Name { get; set; }
}
请帮助我。提前谢谢。
GroupJoin
LINQ 方法是这种情况的完美解决方案:
List<Student> students = new List<Student>();
List<Skills> skills = new List<Skills>();
List<StudentDetails> studentDetails = students.GroupJoin(skills, student => student.StudentID, skill => skill.StudentID, (student, skillsForStudent) => new StudentDetails
{
FirstName = student.FirstName,
LastName = student.LastName,
StudentID = student.StudentID,
Keyskill_Name = (from skill in skillsForStudent
select skill.Keyskill_Name).ToList()
}).ToList();
如何使用GroupJoin
方法?
- 从集合中调用与结果 1 到 1 关系的方法(这里对于每个
Student
,有一个且只有一个对应的StudentDetails
。 - 该方法的第一个参数是您要在其他项目上"分发"的集合(此处技能"分布"在整个学生集上)
- 第二个和第三个参数用于解释如何在第一组的元素和第二组的元素之间进行碰撞。在这种情况下,lambda 表达式非常有用。
- 最后,第四个参数用于定义结果。它是一个具有 2 个参数的函数:第一个集合的一个元素(这里
students
)和第二个集合中使用碰撞找到的相应元素。