コード例 #1
0
            > Zip <TOutItem, TFirstItem, TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerable, TGenGroupByEnumerator>(
            BuiltInEnumerable <TFirstItem> first,
            GroupByDefaultEnumerable <TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerable, TGenGroupByEnumerator> second,
            Func <TFirstItem, GroupingEnumerable <TGenGroupByKey, TGenGroupByElement>, TOutItem> resultSelector
            )
            where TGenGroupByEnumerable : struct, IStructEnumerable <TGenGroupByInItem, TGenGroupByEnumerator>
            where TGenGroupByEnumerator : struct, IStructEnumerator <TGenGroupByInItem>
        {
            var firstBridged = Bridge(first, nameof(first));

            if (second.IsDefaultValue())
            {
                throw CommonImplementation.Uninitialized(nameof(second));
            }
            if (resultSelector == null)
            {
                throw CommonImplementation.ArgumentNull(nameof(resultSelector));
            }

            return
                (CommonImplementation.ZipImpl <
                     TOutItem,
                     TFirstItem,
                     GroupingEnumerable <TGenGroupByKey, TGenGroupByElement>,
                     BuiltInEnumerable <TFirstItem>,
                     BuiltInEnumerator <TFirstItem>,
                     GroupByDefaultEnumerable <TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerable, TGenGroupByEnumerator>,
                     GroupByDefaultEnumerator <TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerator>
                     >(RefLocal(firstBridged), ref second, resultSelector));
        }
コード例 #2
0
            > Join <TOutItem, TJoinKeyItem, TJoinLeftItem, TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerable, TGenGroupByEnumerator>(
            BuiltInEnumerable <TJoinLeftItem> outer,
            GroupByDefaultEnumerable <TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerable, TGenGroupByEnumerator> inner,
            Func <TJoinLeftItem, TJoinKeyItem> outerKeySelector,
            Func <GroupingEnumerable <TGenGroupByKey, TGenGroupByElement>, TJoinKeyItem> innerKeySelector,
            Func <TJoinLeftItem, GroupingEnumerable <TGenGroupByKey, TGenGroupByElement>, TOutItem> resultSelector,
            IEqualityComparer <TJoinKeyItem> comparer
            )
            where TGenGroupByEnumerable : struct, IStructEnumerable <TGenGroupByInItem, TGenGroupByEnumerator>
            where TGenGroupByEnumerator : struct, IStructEnumerator <TGenGroupByInItem>
        {
            var outerBridge = Bridge(outer, nameof(outer));

            if (inner.IsDefaultValue())
            {
                throw CommonImplementation.Uninitialized(nameof(inner));
            }

            if (outerKeySelector == null)
            {
                throw CommonImplementation.ArgumentNull(nameof(outerKeySelector));
            }
            if (innerKeySelector == null)
            {
                throw CommonImplementation.ArgumentNull(nameof(innerKeySelector));
            }
            if (resultSelector == null)
            {
                throw CommonImplementation.ArgumentNull(nameof(resultSelector));
            }

            return
                (CommonImplementation.JoinImpl <
                     TOutItem,
                     TJoinKeyItem,
                     TJoinLeftItem,
                     BuiltInEnumerable <TJoinLeftItem>,
                     BuiltInEnumerator <TJoinLeftItem>,
                     GroupingEnumerable <TGenGroupByKey, TGenGroupByElement>,
                     GroupByDefaultEnumerable <TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerable, TGenGroupByEnumerator>,
                     GroupByDefaultEnumerator <TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerator>
                     >(RefLocal(outerBridge), ref inner, outerKeySelector, innerKeySelector, resultSelector, comparer));
        }
コード例 #3
0
            > Except <TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerable, TGenGroupByEnumerator>(
            BuiltInEnumerable <GroupingEnumerable <TGenGroupByKey, TGenGroupByElement> > first,
            GroupByDefaultEnumerable <TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerable, TGenGroupByEnumerator> second
            )
            where TGenGroupByEnumerable : struct, IStructEnumerable <TGenGroupByInItem, TGenGroupByEnumerator>
            where TGenGroupByEnumerator : struct, IStructEnumerator <TGenGroupByInItem>
        {
            var firstBridge = Bridge(first, nameof(first));

            if (second.IsDefaultValue())
            {
                throw CommonImplementation.Uninitialized(nameof(second));
            }

            return(CommonImplementation.ExceptImpl <
                       GroupingEnumerable <TGenGroupByKey, TGenGroupByElement>,
                       BuiltInEnumerable <GroupingEnumerable <TGenGroupByKey, TGenGroupByElement> >,
                       BuiltInEnumerator <GroupingEnumerable <TGenGroupByKey, TGenGroupByElement> >,
                       GroupByDefaultEnumerable <TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerable, TGenGroupByEnumerator>,
                       GroupByDefaultEnumerator <TGenGroupByInItem, TGenGroupByKey, TGenGroupByElement, TGenGroupByEnumerator>
                       >(RefLocal(firstBridge), ref second));
        }
コード例 #4
0
        public bool SequenceEqual <TGenInItem, TGenKey, TGenElement, TGenEnumerable, TGenEnumerator>(
            BuiltInEnumerable <GroupingEnumerable <TGenKey, TGenElement> > first,
            GroupByDefaultEnumerable <TGenInItem, TGenKey, TGenElement, TGenEnumerable, TGenEnumerator> second,
            IEqualityComparer <GroupingEnumerable <TGenKey, TGenElement> > comparer
            )
            where TGenEnumerable : struct, IStructEnumerable <TGenInItem, TGenEnumerator>
            where TGenEnumerator : struct, IStructEnumerator <TGenInItem>
        {
            var firstBridge = Bridge(first, nameof(second));

            if (second.IsDefaultValue())
            {
                throw CommonImplementation.Uninitialized(nameof(second));
            }

            return
                (CommonImplementation.SequenceEqualImpl <
                     GroupingEnumerable <TGenKey, TGenElement>,
                     BuiltInEnumerable <GroupingEnumerable <TGenKey, TGenElement> >,
                     BuiltInEnumerator <GroupingEnumerable <TGenKey, TGenElement> >,
                     GroupByDefaultEnumerable <TGenInItem, TGenKey, TGenElement, TGenEnumerable, TGenEnumerator>,
                     GroupByDefaultEnumerator <TGenInItem, TGenKey, TGenElement, TGenEnumerator>
                     >(RefLocal(firstBridge), ref second, comparer));
        }