我试图让this solution适应我的项目。
我有可以拥有多个ServiceAreas(多对多)的员工 即。
public class ServiceType
{ public int Id { get; set; }
...
public virtual ICollection<ServiceSubtype> ServiceSubtypes { get; set; }
}
和
public class Employee
{ public int Id { get; set; }
...
public virtual ICollection<Employee> Employees{ get; set; }
}
在Employee的Edit操作的HttpPost中,我已将以下内容的等效项添加到我的项目中
var instructorCourses = new HashSet<int>
(instructorToUpdate.Courses.Select(c => c.CourseID));
我这样读了
var employeeServiceTypes = new HashSet<int>
(employee.ServiceTypes.Select(c => c.Id));
但就在那时我得到以下错误:
值不能为空。 参数名称:source
第140行:var employeeServiceTypes = new HashSet
第141行:(employee.ServiceTypes.Select(c =&gt; c.Id));
我无法解决这个问题。谢谢你的帮助!
答案 0 :(得分:0)
至少有一名员工有ServiceTypes = null
在这种情况下,您无法访问Id
Select(c => c.Id)
- 否则会出现此异常。
您必须通过过滤没有ServiceTypes
的员工来避免访问,或者通过if
条款来避免访问。
HashSet<int> employeeServiceTypes = new HashSet<int>();
if (employee != null && employee.ServiceTypes != null)
{
foreach (int id in employee.ServiceTypes.Select(c => c.Id))
{
employeeServiceTypes.Add(id);
}
}