【问题标题】:What does the e => new EmployeeSummary { Employee = e } means? [duplicate]e => new EmployeeSummary { Employee = e } 是什么意思? [复制]
【发布时间】:2016-08-29 13:36:53
【问题描述】:

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

我知道该函数返回存储库中所有员工的待处理工单总数,但有一行代码我不明白,它是:

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

【问题讨论】:

  • 在互联网上搜索 LINQ。 MSDN Select
  • 你的代码格式也很奇怪
  • 它的意思是“一个接受参数的函数(我们称之为e),并返回一个new EmployeeSummary()(其Employee属性设置为e)”。

标签: c#


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    看看 lambda 表达式和对象初始化器,它们应该可以回答您的大部分问题:)

    Lambda 表达式: https://msdn.microsoft.com/en-us/library/bb397687.aspx

    对象初始化器: https://msdn.microsoft.com/en-us/library/bb397680.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-28
      • 2010-11-06
      • 2020-03-03
      • 2015-09-21
      • 2020-05-10
      • 2015-08-04
      • 2019-08-21
      相关资源
      最近更新 更多