C# InvalidOperationException:序列包含多个元素
我有以下工资单程序代码。 第一个字典保存主数据表中的员工ID和相应的基本工资。 第二个字典保存员工ID和工资调整表中的相应基本工资,用于处理。 我想更新主表中不匹配的每个员工ID的薪资福利基本工资。(工资变动)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
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());
}
});