Ejemplo n.º 1
0
 public static IEnumerableAsync <TSelect> SelectOptional <TItem, TSelect>(this IEnumerableAsync <TItem> enumerable,
                                                                          Func <TItem, Func <TSelect, ISelectionResult <TSelect> >, Func <ISelectionResult <TSelect> >, ISelectionResult <TSelect> > selection)
 {
     return(enumerable.SelectOptional <TItem, TSelect, int, IEnumerableAsync <TSelect> >(1,
                                                                                         (item, carryUpdated, next, skip) => selection(item,
                                                                                                                                       (selected) => next(selected, 1),
                                                                                                                                       () => skip(1)),
                                                                                         (aggregation, carryUpdated) => aggregation));
 }
Ejemplo n.º 2
0
        public static TResult SelectOptionalIndexed <TItem, TSelect, TCarry, TResult>(this IEnumerableAsync <TItem> enumerable,
                                                                                      TCarry carry,
                                                                                      Func <TItem, TCarry, int, Func <TSelect, TCarry, ISelectionResult <TSelect> >, Func <TCarry, ISelectionResult <TSelect> >, ISelectionResult <TSelect> > selection,
                                                                                      Func <IEnumerableAsync <TSelect>, TCarry, TResult> aggregation)
        {
            int index = 0;

            return(enumerable.SelectOptional(carry,
                                             (item, carryUpdated, next, skip) => selection(item, carryUpdated, index++, next, skip),
                                             aggregation));
        }
Ejemplo n.º 3
0
 public static TResult SelectOptional <TItem, TSelect, TCarry1, TCarry2, TResult>(this IEnumerableAsync <TItem> enumerable,
                                                                                  TCarry1 carry1, TCarry2 carry2,
                                                                                  Func <TItem, TCarry1, TCarry2,
                                                                                        Func <TSelect, TCarry1, TCarry2, ISelectionResult <TSelect> >,
                                                                                        Func <TCarry1, TCarry2, ISelectionResult <TSelect> >,
                                                                                        ISelectionResult <TSelect> > selection,
                                                                                  Func <IEnumerableAsync <TSelect>, TCarry1, TCarry2, TResult> aggregation)
 {
     return(enumerable.SelectOptional(carry1.PairWithValue(carry2),
                                      (item, carryUpdated, next, skip) => selection(item, carryUpdated.Key, carryUpdated.Value,
                                                                                    (selected, carry1Updated, carry2Updated) => next(selected, carry1Updated.PairWithValue(carry2Updated)),
                                                                                    (carry1Updated, carry2Updated) => skip(carry1Updated.PairWithValue(carry2Updated))),
                                      (IEnumerableAsync <TSelect> selectedItems, KeyValuePair <TCarry1, TCarry2> carryFinal) =>
                                      aggregation(selectedItems, carryFinal.Key, carryFinal.Value)));
 }