2013-02-18 78 views
0

這純粹是爲了簡化代碼並使其更具可讀性。在一行中使用lambda表達式做多件事

我在計算機上打印出Windows服務列表。這樣做時,我打電話給ServiceController.GetServices()並檢索一組服務。但我寧願將它放入強類型列表中,然後將其打印到我的txbMain文本框中。我已經在三行代碼中設法實現了這兩項功能。但是有沒有辦法在第一行打印出txbMain,這樣我可以避免foreach循環?

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

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

回答

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循環。

+0

沒有任何ForEach方法。 – 2013-02-18 14:39:11

+0

是的,在ToList()方法之後(我最初忘了它)。感謝您指出了這一點。 – 2013-02-18 14:42:44

+0

是的。我明白了:-)謝謝。 – 2013-02-18 14:55:34