我的朋友给了我这段代码,我试着了解它的作用。
我知道该函数返回存储库中所有员工的待处理工作票的总数,但是有一行我不理解的代码,它是以下行:
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;
}
答案 0 :(得分:3)
Select
是一个投影。它使用您传入的函数将输入中的元素映射到新值。e => new EmployeeSummary
是一种速记函数语法(称为“箭头函数”或“lambda表达式”)。
在这种情况下,它为每个Employee创建一个新的EmployeeSummary对象,并将Employee(“e”参数)分配给EmployeeSummary.Employee属性。
最后调用 ToList
,因为Select(像大多数LINQ运算符一样)返回IEnumerable
,这可以被“预告”,但是很少。为了访问.Count
或索引(list[0]
)的元素,必须首先将结果缓冲到列表中。
答案 1 :(得分:1)
看看lambda表达式和对象初始化器,它们应该回答你的大多数问题:)
Lambda表达式: https://msdn.microsoft.com/en-us/library/bb397687.aspx
对象初始值设定项: https://msdn.microsoft.com/en-us/library/bb397680.aspx