То, что вы читаете, звучит как типичный сценарий использования LINQ с шаблоном итератора (его можно легко реализовать в C # с помощью блоков итераторов ).
var results =
someCollection
.Where(c => c.SomeProperty < someValue * 2)
.Where(c => c.OtherProperty == "hi")
.OrderBy(c => c.AnotherProperty)
.Select(c => new {c.SomeProperty, c.OtherProperty});
Или как выражение запроса:
var results = from c in SomeCollection
where c.SomeProperty < someValue * 2
where c.OtherProperty == "Hi"
orderby c.AnotherProperty
select new {c.SomeProperty, c.OtherProperty};
Вы можете связать столько операций, сколько пожелаете. Конечно, доступны и более сложные операции, такие как объединения и группировки.
Я рекомендую книгу Джона Скита C # in Depth , если вы действительно хотите изучить эти методы (и многие другие).