猿问

选择所有类型的雇员,然后选择特定的雇员

这是一种家庭作业,所以有人可以指导我(而不是回答)如何组合这两个 LINQ 查询。这是问题


通过使用 LINQ 将 List 映射到一个匿名对象列表来更新 PayrollSytem,其中每个对象都包含一个员工的姓名和收入。当遇到 BasePlusCommissionEmployee 时,在不修改原始 BasePlusCommissionEmployee 对象的情况下,将基本工资提高 10%。显示姓名和收入。


到目前为止我有这个


var model1 = employees.OfType<BasePlusCommissionEmployee>().Select(x => new

    {

        x.FirstName,

        x.LastName,

        Increased_salary=x.BaseSalary*=1.10M

    });


var model = employees.Select(x => new

    {

        x.FirstName,

        x.LastName,

        earning = x.Earnings()

    });


foreach (var item in model)

    {

        Console.WriteLine(item);

    }

类的UML图是

所以查询单独工作正常,但有什么方法可以使它成为一个查询。如果需要任何其他代码,我会提供。



蝴蝶不菲
浏览 61回答 1
1回答

慕容708150

您可以使用匿名类中的三元运算符简单地检查员工是否是基础加佣金员工。employees.Select(x => new {&nbsp;&nbsp; &nbsp; FirstName = x.FirstName,&nbsp; &nbsp; LastName = x.LastName,&nbsp; &nbsp; Salary = x is BasePlusCommissionEmployee ? (x as BasePlusCommissionEmployee).BaseSalary * 1.1M : x.Earnings()}).ToList();
随时随地看视频慕课网APP
我要回答