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