Здравствуйте, Jack128, Вы писали:
J>Здравствуйте, Uriel, Вы писали:
U>>А IEnumerable<T> навеяно реализацией Option'ов в Scala, где их можно пользовать в конструкции for.
U>>Ну и к тому же очень удобно иногда впихивать операции над Option'ами в портянку вызовов LINQ, a-la:
U>>U>>public Option<T> Foo(Bar input);
U>>IEnumerable<T> foo = SomeCollection.SelectMany(_ => Foo(_));
U>>
J>Не лучше ли такой метод использовать:
J>IEnumerable<TResult> Choose<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, Option<TResult>> selector) { return source.Select(selector).Where(Option.IsSame); }
J>?
J>Ну и вообще в качестве примера http://msdn.microsoft.com/en-us/library/ee370544.aspx
Можно и такой. Не думаю, что это принципиально что-то изменит. По большому счёту, вся эта пляска с IEnumerable<T> была только ради возможности использования Option'ов в foreach. Которая, в свою очередь, осталась привычкой после изучения Scala.

Все остальные прелести LINQ'а уже чуть позже нашлись.