我需要迭代一个对象列表,只对具有布尔属性设置为真的对象执行某些操作。 我正在考虑以下代码
foreach (RouteParameter parameter in parameters.Where(p => p.Condition))
{ //do something }
以及这段代码
foreach (RouteParameter parameter in parameters)
{
if !parameter.Condition
continue;
//do something
}
第一段代码显然更加简洁,但我怀疑它会遍历两次列表——一次用于查询,一次用于循环。虽然这不是一个大型列表,所以我并不过于担心性能问题,但是遍历两次的想法让我感到有些恼火。
问题:是否有一种优雅的方式可以在不遍历两次列表的情况下编写它?