通常在处理 LINQ 序列时,我想将每个项目发送到返回 void 的方法,从而避免 foreach 循环。但是,我还没有找到一种优雅的方法来做到这一点。今天,我写了以下代码:
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 的 lambda 函数,并且我意识到 Select 方法将返回一个布尔序列——我将忽略该序列。但是,这似乎有点笨拙和卡顿。有什么优雅的方法可以做到这一点吗?还是我只是误用了 LINQ?
谢谢。