LINQ シーケンスを処理しているときに、foreach ループを避けて、void を返すメソッドに各項目を送信したいことがよくあります。ただし、これを行うためのエレガントな方法は見つかりませんでした。今日、私は次のコードを書きました:
private StreamWriter _sw;
private void streamToFile(List<ErrorEntry> errors)
{
if (_sw == null)
{
_sw = new StreamWriter(Path.Combine
(Path.GetDirectoryName(_targetDatabasePath), "errors.txt"));
}
Func<ErrorEntry, bool> writeSelector =
(e) => { _sw.WriteLine(getTabDelimititedLine(e)); return true; };
errors.Select(writeSelector);
_sw.Flush();
}
ご覧のとおり、true を返すだけのラムダ関数を作成すると、Select メソッドがブール値のシーケンスを返すことがわかりました。そのシーケンスは無視します。ただし、これは少しお粗末でジャンクのようです。これを行うエレガントな方法はありますか?それとも、LINQ を誤って適用しているだけですか?
ありがとう。