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

时间:2013-02-18 14:30:47

标签: lambda

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

我在计算机上打印出一份Windows服务列表。在这样做时,我调用ServiceController.GetServices()并检索一组服务。但我更喜欢在强类型列表中将其打印出来并将其打印到我的txbMain文本框中。我已经用3行代码完成了这两件事。但有没有办法在第一行打印到txbMain,所以我可以避免foreach循环?

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

foreach (ServiceController sc in list)
    txbMain.Text += sc.DisplayName + Environment.NewLine;

1 个答案:

答案 0 :(得分:0)

如果您在此声明后未使用您的列表,则可以执行以下操作:

ServiceController.GetServices()
    .OrderBy(x => x.DisplayName)
    .ToList()
    .ForEach(x => txbMain.Text += x.DisplayName + Environment.NewLine);

请注意,无论如何它都会在内部执行foreach循环。

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

请参阅Eric Lippert's post about it

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