加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Linq的三元操作符

发布时间:2020-12-16 00:25:24 所属栏目:百科 来源:网络整理
导读:var result = from payroll in currentMonthPayroll select new SalaryDifference { PreviousMonthSalary = previousMonthPayroll.Where(t = t.EmployeeId == payroll.EmployeeId).FirstOrDefault() == null ? default(decimal) : previousMonthPayroll.Wher
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()逻辑来选择薪资值?

我试过了:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读