在一行中使用lambda表达式执行多项操作

在一行中使用lambda表达式执行多项操作,lambda,Lambda,这纯粹是为了简化代码并使其更具可读性 我在计算机上打印出Windows服务列表。在这样做时,我调用ServiceController.GetServices()并检索服务数组。但我更愿意把它放在一个强类型列表中,然后打印到我的TXBMIN文本框中。我已经在3行代码中完成了这两项工作。但是有没有办法在第一行打印到txbMain,这样我就可以避免foreach循环 List<ServiceController> list = ServiceController.GetServices()

这纯粹是为了简化代码并使其更具可读性

我在计算机上打印出Windows服务列表。在这样做时,我调用
ServiceController.GetServices()
并检索服务数组。但我更愿意把它放在一个强类型列表中,然后打印到我的TXBMIN文本框中。我已经在3行代码中完成了这两项工作。但是有没有办法在第一行打印到txbMain,这样我就可以避免foreach循环

List<ServiceController> list = ServiceController.GetServices()
    .OrderBy(x => x.DisplayName)
    .ToList();

foreach (ServiceController sc in list)
    txbMain.Text += sc.DisplayName + Environment.NewLine;
List List=ServiceController.GetServices()
.OrderBy(x=>x.DisplayName)
.ToList();
foreach(列表中的服务控制器sc)
txbMain.Text+=sc.DisplayName+Environment.NewLine;

如果在此语句之后不使用列表,可以执行以下操作:

ServiceController.GetServices()
    .OrderBy(x => x.DisplayName)
    .ToList()
    .ForEach(x => txbMain.Text += x.DisplayName + Environment.NewLine);
请注意,它将在内部执行foreach循环

更糟糕的是,在使用ForEach方法之前,它必须首先创建一个列表,这非常耗时


也许你应该坚持使用foreach循环。

没有任何foreach方法。是的,在ToList()方法之后(我一开始忘记了)有。谢谢你指出这一点。是的。我想出来了:-)谢谢。