You call an expensive remote service inside a Select and want it to run exactly once even if the result is enumerated multiple times. Which approach guarantees that?IEnumerable<Result> q = ids.Select(id => CallRemote(id));