var result = from payroll in currentMonthPayroll
select new SalaryDifference
{
PreviousMonthSalary = previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId).FirstOrDefault() == null ?
default(decimal) : previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId).FirstOrDefault().Salary,
};
Is there a way not to repeat the previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId).FirstOrDefault()
logic to pick Salary
value?
I tried:
previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId)
.FirstOrDefault().Salary ?? default(decimal);
But, if previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId).FirstOrDefault()
is null, it throws exception.
As witnessed by all of the answers, there are several ways of doing this, my preferred way would be:
var result = from payroll in currentMonthPayroll
select new SalaryDifference
{
PreviousMonthSalary = previousMonthPayroll
.Where(t => t.EmployeeId == payroll.EmployeeId)
.Select(prev => prev.Salary)
.FirstOrDefault()
};
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments