Kin*_*mau 7 c# visual-studio-2010
我有以下代码用于工资单程序.第一个字典保存在主数据表中保存的员工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());
}
});
Run Code Online (Sandbox Code Playgroud)
但是,我一直在收到错误'Sequence contains more than one element'.我该如何解决这个错误?
Fre*_*man 21
您可以使用FirstOrDefault(),但如果存在多个元素,SingleOrDefault会抛出异常.
在这里,您可以确切地看到单个或默认方法的作用:http: //msdn.microsoft.com/en-us/library/system.linq.enumerable.singleordefault(v=vs.100).aspx