Боюсь, это все, что вы можете сделать в блоке итератора.В F # нет эквивалента yield!
или идеи yield foreach
.К сожалению, но так оно и есть: (
Конечно, вы могли бы избежать использования блока итератора во-первых:
public IEnumerable<Class> Filter(IEnumerable<Class> collection)
{
return someCondition ? collection : Enumerable.Repeat(new Class(2), 1);
}
Или если у вас более сложная логика:
public IEnumerable<Class> Filter(IEnumerable<Class> collection)
{
return someCondition ? collection : FilterImpl(collection);
}
private IEnumerable<Class> FilterImpl(IEnumerable<Class> collection)
{
yield return new Class(2);
yield return new Class(1);
// etc
}