InvalidOperationException:序列包含多个元素

本文关键字:元素 包含多 InvalidOperationException | 更新日期: 2023-09-27 18:00:36

我有下面的工资单程序代码。第一个字典保存主数据表中保存的员工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'。如何解决此错误?

InvalidOperationException:序列包含多个元素

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

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