C# InvalidOperationException:序列包含多个元素

C# InvalidOperationException:序列包含多个元素,c#,visual-studio-2010,C#,Visual Studio 2010,我有以下工资单程序代码。 第一个字典保存主数据表中的员工ID和相应的基本工资。 第二个字典保存员工ID和工资调整表中的相应基本工资,用于处理。 我想更新主表中不匹配的每个员工ID的薪资福利基本工资。(工资变动) var-OHEMDictionary=employees.OrderBy(es=>es.empID) .ToDictionary(od=>od.empID, od=>od.工资); var SalaryFittmentDictionary=SalaryFittments .Where(x

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

var-OHEMDictionary=employees.OrderBy(es=>es.empID)
.ToDictionary(od=>od.empID,
od=>od.工资);
var SalaryFittmentDictionary=SalaryFittments
.Where(x=>x.U\U PD\U Code.Trim().ToString()==“SYS001”)
.OrderBy(es=>es.U\U员工ID)
.ToDictionary(od=>od.U\U员工ID,
od=>od.U\U PD\U金额);
var差=OHEMDictionary
其中(kv=>SalaryFittmentDictionary[kv.Key]!=kv.Value);
difference.ToList().ForEach(x=>
{
十进制工资=x.Value.Value;
var codeToUpdate=工资福利
其中(y=>y.U_员工ID等于(x.Key))
.选择(z=>z.Code)
.SingleOrDefault();`**您可以使用FirstOrDefault(),但如果存在多个元素,SingleOrDefault将引发异常

在这里,您可以确切地看到单一或默认方法的作用:

你认为一名员工可以有多个代码吗?如果没有,
SingleOrDefault
可能会向你显示错误和不一致性。那么你应该修复导致错误的错误,并继续使用它
SingleOrDefault
而不是
FirstOrDefault
SingleOrDefault
就像一个报警系统。
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());
                        }
                    });