예제 #1
0
        public bool MoveNext()
        {
            if (InnerLookup.IsDefaultValue())
            {
                InnerLookup = CommonImplementation.ToLookupImpl(ref Right, RightKeySelector);
            }

            while (Left.MoveNext())
            {
                var cur    = Left.Current;
                var curKey = LeftKeySelector(cur);

                if (curKey == null)
                {
                    Current = ResultSelector(cur, EmptyCache <TKeyItem, TRightItem> .EmptyGrouped);
                    return(true);
                }

                var forKey = InnerLookup[curKey];

                var asGrouped = new GroupedEnumerable <TKeyItem, TRightItem>(ref forKey);
                Current = ResultSelector(cur, asGrouped);
                return(true);
            }

            return(false);
        }
예제 #2
0
 public static System.Collections.Generic.LinkedList <TItem> LinkedList <TItem, TGroupedKey>(GroupedEnumerable <TGroupedKey, TItem> second)
 => LinkedListImpl <TItem, GroupedEnumerable <TGroupedKey, TItem>, GroupedEnumerator <TItem> >(ref second);
예제 #3
0
 public static System.Collections.Generic.Stack <TItem> Stack <TItem, TGroupedKey>(GroupedEnumerable <TGroupedKey, TItem> second)
 => StackImpl <TItem, GroupedEnumerable <TGroupedKey, TItem>, GroupedEnumerator <TItem> >(ref second);