2016-08-29 44 views
0

我的朋友给了我这段代码,我尝试了解它的功能。e => new EmployeeSummary {Employee = e}是什么意思?

据我所知,该函数返回挂起的工作的门票在库中的所有员工的总人数,但有一个单一的代码行,我不明白,它的线:

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

在互联网上搜索LINQ。 [MSDN Select](https://msdn.microsoft.com/en-us/library/system.linq.enumerable.select(v = vs.110).aspx) – crashmstr

+2

[Lambda表达式(C#编程指南)](https ://msdn.microsoft.com/en-us/library/bb397687.aspx) – Fabio

+1

此外,您的代码格式是超级不可思议 –

回答

3

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

在这种情况下,它为每个Employee创建一个新的EmployeeSummary对象,并将Employee(“e”参数)分配给EmployeeSummary.Employee属性。

ToList在最后被调用,因为Select(与大多数LINQ运算符一样)返回IEnumerable,它可以“foreach”,但很少。为了访问.Count或索引处的元素(list[0]),必须先将结果缓存到列表中。