-
Notifications
You must be signed in to change notification settings - Fork 416
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Default elements from a secondary source #997
Comments
I would argue that as currently proposed, it is overly specific and complicated. I'd prefer to see a family of methods: IEnumerable<TSource> DefaultIf<TSource>(this IEnumerable<TSource> source, TSource defaultValue, TSource replacementValue);
IEnumerable<TSource> DefaultIf<TSource>(this IEnumerable<TSource> source, TSource defaultValue, IEnumerable<TSource> replacementValues);
IEnumerable<TSource> DefaultIf<TSource, TDefault>(this IEnumerable<TSource> source, TSource defaultValue, IEnumerable<TDefault> replacementValues, Func<TSource, TDefault, TSource> defaultor); Each with a matching |
Those family of methods can be added as simpler overloads and which would ultimately be simple wrappers around the more generally applicable workhorse prototype I submitted. The example admittedly is a very simple one and doesn't demonstrate what's fully possible (I was in a hurry and might post a richer one later).
The value of that function is that the output doesn't have to be tied to the source or even the default. The three types can vary as far as the algorithm is concerned. Those who don't need that flexibility can use the simpler overloads where the input and output types are the same and the missing value can be identified with an equality check as opposed to a predicate function.
You mean |
I'd like to propose an operator called
Default
that defaults an element from a secondary sequence when an element from the source sequence is deemed missing or faulty. A function is used to determine if an element of the source sequence is deemed missing or faulty and another function projects a result given the missing/faulty element and a default from secondary sequence for substitution/replacement.A prototype would be as follows:
The following code demonstrates the operator in action:
Outputs:
The text was updated successfully, but these errors were encountered: