使用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 } );
我现在需要加载子部门列表。 每个子部门都有Id
, DepartmentId
和Name
。 但是,我只想让与所选部门相关联的子部门。 目前,我有以下内容:
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 } );