将课程集合应用于学生集合
apply a collection of courses to a collection of students
我正在处理对象集合,并试图摆脱每当遇到问题时循环并查看 API 以查看是否已经提供的习惯。
我目前有学生合集和学生正在上的课程合集。这些课程有一个学生 ID,所以我可以写一个大的旧 for 循环,围绕学生循环,为每个学生找出课程并将其粘贴进去。
Dim Students As Generic.List(Of Student)
Dim Courses As Generic.List(Of Course)
For Each s As Student In Students
s.Courses = Courses.Where(x => x.StudentId == s.StudentId)
Next
我想知道 linq 是否以某种形式涵盖了此功能。我正在寻找这样的东西:
Students.*DoSomethingClever(Courses, x => x.StudentId)*
我知道以上内容可能看起来像废话,但我希望它传达了我正在努力实现的目标。
亚历克斯
你可以做类似的事情
Students.ForEach(s => s.Courses = Courses.Where(x => x.StudentId == s.StudentId));
您可以并行执行此操作(仅适用于大集合并且仅当您至少有两个处理器内核时)
Students.AsParallel().ForAll(s=>
{
s.Courses = Courses.Where(x => x.StudentId == s.StudentId));
});
如果说 DoSomethingClever 是指加入课程中的数据,请参阅:
Dim JoinedData = From s In Students
Join c In Courses
On s.StudentId Equals c.StudentId
Select StudentName = s.FirstName, CourseName = c.Name
更多信息:How to: Combine Data with LINQ by Using Joins (Visual Basic)
我正在处理对象集合,并试图摆脱每当遇到问题时循环并查看 API 以查看是否已经提供的习惯。
我目前有学生合集和学生正在上的课程合集。这些课程有一个学生 ID,所以我可以写一个大的旧 for 循环,围绕学生循环,为每个学生找出课程并将其粘贴进去。
Dim Students As Generic.List(Of Student)
Dim Courses As Generic.List(Of Course)
For Each s As Student In Students
s.Courses = Courses.Where(x => x.StudentId == s.StudentId)
Next
我想知道 linq 是否以某种形式涵盖了此功能。我正在寻找这样的东西:
Students.*DoSomethingClever(Courses, x => x.StudentId)*
我知道以上内容可能看起来像废话,但我希望它传达了我正在努力实现的目标。
亚历克斯
你可以做类似的事情
Students.ForEach(s => s.Courses = Courses.Where(x => x.StudentId == s.StudentId));
您可以并行执行此操作(仅适用于大集合并且仅当您至少有两个处理器内核时)
Students.AsParallel().ForAll(s=>
{
s.Courses = Courses.Where(x => x.StudentId == s.StudentId));
});
如果说 DoSomethingClever 是指加入课程中的数据,请参阅:
Dim JoinedData = From s In Students
Join c In Courses
On s.StudentId Equals c.StudentId
Select StudentName = s.FirstName, CourseName = c.Name
更多信息:How to: Combine Data with LINQ by Using Joins (Visual Basic)