2017-11-06 10 views
1

ForEachラムダ式でこれを行うことは可能ですか?私がやろうとしている何クラスをインスタンス化し、lambda foreachメソッドを呼び出す

reports.ForEach(x => new PublishReport(x) 
     PublishReport.PublishReports()); 

PublishReport(クラスやメソッド名を持つ裸の)クラスは、レポートオブジェクトを渡した後、PublishReportクラスのPublishReportsメソッドを呼び出してインスタンス化しています。私が行っているの周りに

作品は以下のとおりです。

reports.ForEach(x => CallPublishReports(x)); 

private void CallPublishReport(Report report) 
{ 
    PublishReport publishReport = new PublishReport(report); 
    publishReport.PublishReports(); 
} 
+1

あなたは、静的メソッドをやって考えがあります代わりに?それでは、単に '' PublishReport.PublishReports(x) ''を呼び出すことができます。 –

+0

提案に感謝します。それを考えなかった。それを調べます。 – rds80

答えて

2

あなたが探しているコードは、このようなものになります。あなたはForEachを置き換えることができます

reports.ForEach(x => (new PublishReport(x)).PublishReport()); 

それとも

reports.ForEach(x => { 
    var report = new PublishReport(x); 
    report.PublishReports(); 
}); 

を、Selectと同様、前者がPLINQ afaikにのみ存在するためです。

1

ただ、ラムダと体与える:あなたが最初にこのようにそれらの上に、その後のインスタンスを作成するためにForEachSelectを使用することによってそれを行うことができます

reports.ForEach(x => 
{ 
    PublishReport publishReport = new PublishReport(x); 
    publishReport.PublishReports(); 
}); 
+1

ありがとう!インスタンス化するとき、上のコードのPublishReportクラスはxであるべきですか? – rds80

2

を:

reports 
    .Select(r => new PublishReport(r)) 
    .ForEach(pr => pr.PublishReports()); 
関連する問題