Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

InvalidOperationException: Sequence contains more than one element

I have the following code below for a payroll program. The first dictionary holds the employee IDs and corresponding basic pays held in a master data table. The second dictionary holds the employee IDs and corresponding basic pays held in a salary fitment table - used for processing. I want to update the salary fitment basic pays for each employee ID that do not match in the master table. (Changes in salary).

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());
                        }
                    });

However, I keep getting the error 'Sequence contains more than one element'. How do I solve this error?

like image 363
Kinyanjui Kamau Avatar asked Feb 22 '13 09:02

Kinyanjui Kamau


1 Answers

You can use FirstOrDefault() but SingleOrDefault throws an exception if more than one element exists.

Here you can see exactly what the single or default method does: http://msdn.microsoft.com/en-us/library/system.linq.enumerable.singleordefault(v=vs.100).aspx

like image 196
Freeman Avatar answered Nov 03 '22 11:11

Freeman