使用 LINQ 组合 parent 列表和多个 child 列表
Combine parent list & multiple child list using LINQ
尝试组合多个 child 列表集合并附加到单个 parent 列表,所有 child 都有一个与 parent 相同的 ID编号.
List<Department> DepartmentList
List<Student> StudentList
List<Professor> ProfessorList
class ParentVM
{
public List<Department> DepartmentList;
}
class Department
{
public int Id { get; set; }
Public List<Student> StudentList
Public List<Professor> ProfessorList
}
class student
{
public int Id { get; set; }
Public int DepartmentId { get; set; }
public int StudentName { get; set; }
}
class professor
{
public int Id { get; set; }
Public int DepartmentId { get; set; }
public int ProfessorName { get; set; }
}
我有以下查询要将 parent 附加到 child:
var departmentQuery =
from dpt in DepartmentList
join stu in StudentList on dpt.Id equals stu.DepartmentId
group StudentList by DepartmentId;
foreach(var grp in departmentQuery) {
grp.Key.StudentList = grp.ToList();
}
使用上面的查询我将不得不再次为 ProfessorList 重复上面的查询并再次重复 foreach 循环以将教授列表附加到部门集合,但是我如何编写查询以将所有 childrens 附加到它的 parents 使用一个查询和一个 foreach 循环。
我假设 Parent
object 有一个 Child
object 的列表并且 Child
object 有一个 ParentId
属性对应于parents的Id
.
class Parent
{
public int Id { get; set; }
public List<Child> Children { get; set; }
}
class Child
{
public int Id { get; set; }
public int ParentId { get; set; }
}
从多个列表中分配所有相应的 children 可以通过以下方式完成:
parentList = parentList.Select(
parent => new Parent
{
Id = parent.Id,
Children = childList1.Union(childList2.Union(childList3))
.Where(child => child.ParentId == parent.Id)
.ToList()
}
).ToList();
简单遍历每个 Department 对象并分配其子列表:
foreach (var dept in DepartmentList) {
dept.StudentList = StudentList.Where(s => s.DepartmentId == dept.Id).ToList();
dept.ProfessorList = ProfessorList.Where(p => p.DepartmentId == dept.Id).ToList();
}
尝试组合多个 child 列表集合并附加到单个 parent 列表,所有 child 都有一个与 parent 相同的 ID编号.
List<Department> DepartmentList
List<Student> StudentList
List<Professor> ProfessorList
class ParentVM
{
public List<Department> DepartmentList;
}
class Department
{
public int Id { get; set; }
Public List<Student> StudentList
Public List<Professor> ProfessorList
}
class student
{
public int Id { get; set; }
Public int DepartmentId { get; set; }
public int StudentName { get; set; }
}
class professor
{
public int Id { get; set; }
Public int DepartmentId { get; set; }
public int ProfessorName { get; set; }
}
我有以下查询要将 parent 附加到 child:
var departmentQuery =
from dpt in DepartmentList
join stu in StudentList on dpt.Id equals stu.DepartmentId
group StudentList by DepartmentId;
foreach(var grp in departmentQuery) {
grp.Key.StudentList = grp.ToList();
}
使用上面的查询我将不得不再次为 ProfessorList 重复上面的查询并再次重复 foreach 循环以将教授列表附加到部门集合,但是我如何编写查询以将所有 childrens 附加到它的 parents 使用一个查询和一个 foreach 循环。
我假设 Parent
object 有一个 Child
object 的列表并且 Child
object 有一个 ParentId
属性对应于parents的Id
.
class Parent
{
public int Id { get; set; }
public List<Child> Children { get; set; }
}
class Child
{
public int Id { get; set; }
public int ParentId { get; set; }
}
从多个列表中分配所有相应的 children 可以通过以下方式完成:
parentList = parentList.Select(
parent => new Parent
{
Id = parent.Id,
Children = childList1.Union(childList2.Union(childList3))
.Where(child => child.ParentId == parent.Id)
.ToList()
}
).ToList();
简单遍历每个 Department 对象并分配其子列表:
foreach (var dept in DepartmentList) {
dept.StudentList = StudentList.Where(s => s.DepartmentId == dept.Id).ToList();
dept.ProfessorList = ProfessorList.Where(p => p.DepartmentId == dept.Id).ToList();
}