代码之家  ›  专栏  ›  技术社区  ›  flipdoubt

使用LINQ循环并执行操作,而不仅仅是选择数据,这是一种糟糕的做法吗?

  •  5
  • flipdoubt  · 技术社区  · 17 年前

    重大主观问题: 我经常发现自己使用LINQ过滤一组对象,然后在查询后,对每个结果执行旧式的foreach操作。是否有一种好的方法来组合这两个任务,以便对每个与Where()谓词匹配的对象执行一个操作?几乎就像将Action传递给Select()。这可能无法编译,但传入一个返回bool的Func怎么样,然后您可以将其嵌套在另一个查询中,该查询可以处理失败或成功的情况。有人在生产代码中这样做了吗?这会被视为不良做法吗?还有其他想法吗?

    3 回复  |  直到 17 年前
        1
  •  8
  •   mqp    17 年前

    许多人要求 ForEach 方法——事实上 方便(这就是为什么我们有一个 MoreLINQ ).这也是 可能 危险。

    现在考虑一下 循环 -它是一个“动作”而不是一个函数,因为它不返回任何东西。如果它没有任何副作用,那就毫无意义了!因此,它违背了LINQ哲学的一部分——它基本上不是以函数式风格处理问题。

    所以 许多图书馆等。这是一个非常明显的伪运算符。想想你在做什么,注意你正在引入副作用的事实。这在一定程度上是LINQ的函数式风格和更命令式的编码风格之间的界限。

        2
  •  11
  •   Jon Skeet    17 年前

    List<T> 有a ForEach() 为此而设计的方法。

        3
  •  2
  •   Mohit Chakraborty    17 年前

    你可以实现一个扩展 ForEach IEnumerable上的方法。

    推荐文章