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

时间:2016-08-29 13:36:53

标签: c#

我的朋友给了我这段代码,我试着了解它的作用。

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

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

2 个答案:

答案 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