e => new EmployeeSummary {Employee = e}是什么意思?

本文关键字:#160 是什么 意思 new EmployeeSummary Employee | 更新日期: 2023-09-27 18:04:37

我的朋友给了我这段代码,我试着去理解它是做什么的。

我理解该函数返回存储库中所有员工的待处理工作票的总数,但是有一行代码我不理解,它是:

var employees = employeeRepository.All.Select(e => new EmployeeSummary { Employee = e }).ToList();

我明白最后它列出了一个雇员名单,但我不理解e=> new EmployeeSymmary

请问有人能帮忙吗?

代码:

public int GetTicketsForEmployees()
{
    EmployeeRepository employeeRepository = new EmployeeRepository();
    ServiceTicketsRepository serviceTicketRepository = new ServiceTicketRepository();
    
    int ticketscount = 0;
    var employees = employeeRepository.All.Select(e => new EmployeeSummary { Employee = e }).ToList();
    foreach (var employee in employees) {
        var tickets = serviceTicketRepository.AllIncluding(t => t.Customer).Where(t => t.AssignedToID ==employee.Employee.ID).ToList();
        ticketscount += tickets.Count();
    }
    return ticketscount;
}

e => new EmployeeSummary {Employee = e}是什么意思?

Select是投影。它使用传入的函数将元素从输入映射到新值。e => new EmployeeSummary是一种简写函数语法(称为"箭头函数"或"lambda表达式")。

在本例中,它为每个Employee创建一个新的EmployeeSummary对象,并将Employee("e"参数)分配给EmployeeSummary。员工财产。

ToList在最后被调用,因为Select(像大多数LINQ操作符一样)返回一个IEnumerable,它可以"foreach",但很少有其他的。为了访问.Count或索引(list[0])上的元素,必须首先将结果缓冲到一个列表中。

看一看lambda表达式和对象初始化器,它们应该能回答你的大多数问题:)

Lambda表达式:https://msdn.microsoft.com/en-us/library/bb397687.aspx

对象初始值设定项:https://msdn.microsoft.com/en-us/library/bb397680.aspx