InvalidOperationException:Sequence包含多个元素

我有以下代码用于工资单程序。 第一个字典保存在主数据表中保存的员工ID和相应的基本工资。 第二本字典包含员工ID和相应的基本工资,用于工资配件表 – 用于处理。 我想更新主表中不匹配的每个员工ID的工资补贴基本工资。 (工资变动)。

var OHEMDictionary = employees.OrderBy(es => es.empID) .ToDictionary(od => od.empID, od => od.salary); var SalaryFitmentDictionary = salaryFitments .Where(x => x.U_PD_Code.Trim().ToString() == "SYS001") .OrderBy(es => es.U_Employee_ID) .ToDictionary(od => od.U_Employee_ID, od => od.U_PD_Amount); var difference = OHEMDictionary .Where(kv => SalaryFitmentDictionary[kv.Key] != kv.Value); difference.ToList().ForEach(x => { decimal salary = x.Value.Value; var codeToUpdate = salaryFitments .Where(y => y.U_Employee_ID.Equals(x.Key)) .Select(z => z.Code) .SingleOrDefault(); `**<---exception thrown here**` var salaryFitment = salaryFitmentService .GetSalaryFitment(codeToUpdate); if (salaryFitment != null) { // Save record salaryFitmentService .UpdateSalaryFitment(salaryFitment, salary.ToString()); } }); 

但是,我不断收到错误'Sequence contains more than one element' 。 我该如何解决这个错误?

您可以使用FirstOrDefault(),但如果存在多个元素,则SingleOrDefault会引发exception。

在这里,您可以确切地看到单个或默认方法的作用: http : //msdn.microsoft.com/en-us/library/system.linq.enumerable.singleordefault(v=vs.100).aspx