使用LINQ在C#中构建级联列表

我需要显示部门和子部门的列表。 我正在正确加载部门列表。

这时,我有:

var deparmentList = Departments.LoadList(); var departments = new List( from department in departmentList select new ListItem { Text = department.Name, Value = department.Id.ToString(), IsSelected = department.IsActive } ); 

我现在需要加载子部门列表。 每个子部门都有IdDepartmentIdName 。 但是,我只想让与所选部门相关联的子部门。 目前,我有以下内容:

 var subDepartmentList = SubDepartment.LoadList(); var subdepartments = new List( from subdepartment in subDepartmentList // where ? select new ListItem { Text = subdepartment.Name, Value = subdepartment.Id.ToString(), IsSelected = false } ); 

我不确定如何在两者之间进行连接或过滤。 我如何在LINQ中执行此操作?

 var selectedDepartmentSubDepartments = from dep in departments join subDep in subDepartmentList on dep.Value equals subDep.Id.ToString() where dep.IsSelected select new ListItem { Text = subDep.Name, Value = subDep.Id.ToString(), IsSelected = false }; var subdepartments = new List(selectedDepartmentSubDepartments); 

您可以添加一个where子句来检查是否存在至少一个关联和“选定”部门:

 var subDepartmentList = SubDepartment.LoadList(); var subdepartments = new List( from subdepartment in subDepartmentList where departments.Any(x => x.IsSelected && x.Value == subdepartment.DepartmentId.ToString()) select new ListItem { Text = subdepartment.Name, Value = subdepartment.Id.ToString(), IsSelected = false } );