首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将LINQ序列中的项发送到返回void的方法

将LINQ序列中的项发送到返回void的方法
EN

Stack Overflow用户
提问于 2010-03-12 10:02:48
回答 2查看 8.1K关注 0票数 15

通常,当我处理LINQ序列时,我希望将每个项目发送到一个返回void的方法,从而避免foreach循环。然而,我还没有找到一种优雅的方法来做到这一点。今天,我写了以下代码:

代码语言:javascript
运行
复制
    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?

谢谢。

EN

Stack Overflow用户

发布于 2010-03-12 22:11:03

普遍的共识是LINQ用于查询和选择...而您使用传统的迭代方法进行循环和迭代。

我不想这么说,但是您将使用传统的foreach循环,因为您希望执行linq查询,并迭代生成的IEnumerable。它有助于代码的可读性,我承认LINQ很容易上瘾。您希望使用Lambdas和延迟执行来完成所有工作,但是循环应该留给传统的C#循环方法。这肯定会对副作用有所帮助。

票数 6
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2430033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档