У меня есть следующий код ниже для программы расчета заработной платы. Первый словарь содержит идентификаторы сотрудников и соответствующие базовые выплаты, хранящиеся в таблице основных данных. Второй словарь содержит идентификаторы сотрудников и соответствующие базовые выплаты, хранящиеся в таблице окладов, которые используются для обработки. Я хочу обновить базовые выплаты заработной платы для каждого идентификатора сотрудника, которые не совпадают в основной таблице. (Изменение заработной платы).
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'
. Как решить эту ошибку?
SingleOrDefault
мог бы показать вам и несоответствие. Затем вы должны исправить ошибку, вызвавшую ее, и остаться с нейSingleOrDefault
вместоFirstOrDefault
.SingleOrDefault
похож на сигнализацию. - person Tim Schmelter   schedule 22.02.2013