2016-08-29 2 views
0

Mein Freund gab mir diesen Code und ich versuchte zu verstehen, was es tut.Was bedeutet die e => neue EmployeeSummary {Employee = e}?

Ich verstehe, dass die Funktion Gesamtzahl der ausstehenden Arbeits Tickets für alle Mitarbeiter im Repository gibt, aber es gibt eine einzige Zeile Code, die ich nicht verstanden habe, und es ist die Linie:

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

I verstehe, dass am Ende es eine Liste von Mitarbeitern macht, aber die e=> new EmployeeSymmary verstehe ich nicht

Bitte kann jeder helfen?

Der Code:

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

Suchen Sie im Internet nach LINQ. [MSDN-Auswahl] (https://msdn.microsoft.com/en-us/library/system.linq.enumerable.select (v = vs.110) .aspx) – crashmstr

+2

[Lambda-Ausdrücke (C# -Programmierhandbuch)] (https : //msdn.microsoft.com/en-us/library/bb397687.aspx) – Fabio

+1

Auch Ihre Codeformatierung ist super wonky –

Antwort

3

Select ist eine Projektion. Es bildet die Elemente von der Eingabe in neue Werte ab, wobei eine Funktion verwendet wird, die Sie übergeben. Die e => new EmployeeSummary ist eine Kurzschreibfunktionssyntax (als "Pfeilfunktion" oder "Lambda-Ausdruck" bezeichnet).

In diesem Fall erstellt es ein neues EmployeeSummary-Objekt für jeden Mitarbeiter und weist der EmployeeSummary.Employee-Eigenschaft den Mitarbeiter (den Parameter "e") zu.

ToList wird am Ende aufgerufen, weil Select (wie die meisten LINQ-Operatoren) eine IEnumerable zurückgibt, die "foreach" ed sein kann, aber sehr wenig anderes. Um auf das .Count oder ein Element an einem Index zuzugreifen (list[0]), müssen die Ergebnisse zuerst in einer Liste gepuffert werden.