Здравствуйте, 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>
Не лучше ли такой метод использовать:
IEnumerable<TResult> Choose<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, Option<TResult>> selector) { return source.Select(selector).Where(Option.IsSame); }
?
Ну и вообще в качестве примера
http://msdn.microsoft.com/en-us/library/ee370544.aspx