2013-02-22 92 views
4

对于工资计划,我具有以下代码。 第一个字典包含在主数据表中保存的员工ID和相应的基本工资。 第二个字典包含工资档案表中保存的员工ID和相应的基本工资 - 用于处理。 我想为主表中不匹配的每个员工ID更新薪资配件基本支付。 (工资变化)。InvalidOperationException:序列包含多个元素

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'。我该如何解决这个错误?

+0

你想到的是员工可以拥有多个代码?如果不是,'SingleOrDefault'可能会显示你和不一致。然后你应该修复引起它的错误,并使用SingleOrDefault而不是FirstOrDefault。 'SingleOrDefault'就像一个报警系统。 – 2013-02-22 09:57:14

回答

相关问题