Linq的三元运算符

迈克·法特
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,
                         };

有没有办法不重复previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId).FirstOrDefault()选择Salary价值逻辑

我试过了:

previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId)
                    .FirstOrDefault().Salary ?? default(decimal);

但是,如果previousMonthPayroll.Where(t => t.EmployeeId == payroll.EmployeeId).FirstOrDefault()为null,则抛出异常。

亚历克斯

从所有答案中可以看出,有几种方法可以做到这一点,我的首选方法是:

var result = from payroll in currentMonthPayroll
             select new SalaryDifference
             {
                 PreviousMonthSalary = previousMonthPayroll
                     .Where(t => t.EmployeeId == payroll.EmployeeId)
                     .Select(prev => prev.Salary)
                     .FirstOrDefault()
             };

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章