@@ -191,8 +191,7 @@ private void BuildInterfaceIndexes()
191191 case InheritanceSchema . ConcreteTable : {
192192 var grouping = hierarchy ;
193193 var allImplementors = @interface . AllImplementors
194- . Where ( t => t . Hierarchy == grouping . Key && ! t . IsAbstract )
195- . ToList ( ) ;
194+ . Where ( t => t . Hierarchy == grouping . Key && ! t . IsAbstract ) ;
196195 var primaryIndexes = allImplementors
197196 . Select ( t => ( Index : t . Indexes . Single ( static i => i . IsPrimary && ! i . IsVirtual ) , Type : t ) )
198197 . Select ( p => untypedIndexes . Contains ( p . Index )
@@ -580,12 +579,14 @@ private IndexInfo BuildJoinIndex(TypeInfo reflectedType, IEnumerable<IndexInfo>
580579 }
581580
582581 // Adding value columns
583- var typeOrder = reflectedType . Ancestors
584- . Append ( reflectedType )
585- . Select ( static ( t , i ) => ( Type : t , Index : i ) )
586- . ToDictionary ( static a => a . Type , static a => a . Index ) ;
587- var types = reflectedType . Ancestors . ToHashSet ( ) ;
588- types . Add ( reflectedType ) ;
582+ var typeOrder = new Dictionary < TypeInfo , int > ( reflectedType . Ancestors . Count + 1 ) ;
583+ var types = new HashSet < TypeInfo > ( reflectedType . Ancestors . Count + 1 ) ;
584+
585+ var indx = 0 ;
586+ foreach ( var t in reflectedType . Ancestors . Append ( reflectedType ) ) {
587+ typeOrder . Add ( t , indx ++ ) ;
588+ _ = types . Add ( t ) ;
589+ }
589590
590591 var valueColumnMap = new List < List < int > > ( ) ;
591592 foreach ( var index in indexesToJoin ) {
@@ -618,13 +619,11 @@ private IndexInfo BuildJoinIndex(TypeInfo reflectedType, IEnumerable<IndexInfo>
618619 }
619620 var orderedIndexes = indexesToJoin
620621 . Select ( ( index , i ) => ( index , columns : valueColumnMap [ i ] , i ) )
621- . OrderBy ( a => typeOrder [ a . index . ValueColumns . First ( ) . Field . ReflectedType ] )
622- . ToList ( ) ;
622+ . OrderBy ( a => typeOrder [ a . index . ValueColumns . First ( ) . Field . ReflectedType ] ) ;
623623
624624 var columnsToAdd = new List < ColumnInfo > ( ) ;
625625 var valueColumnMapping = new List < Pair < int , List < int > > > ( ) ;
626- for ( var i = 0 ; i < orderedIndexes . Count ; i ++ ) {
627- var item = orderedIndexes [ i ] ;
626+ foreach ( var item in orderedIndexes ) {
628627 if ( valueColumnMapping . Count == 0 )
629628 item . columns . InsertRange ( 0 , Enumerable . Range ( 0 , result . IncludedColumns . Count ) ) ;
630629 foreach ( var columnIndex in item . columns ) {
@@ -750,7 +749,7 @@ private IndexInfo BuildViewIndex(TypeInfo reflectedType, IndexInfo indexToApplyV
750749 var actualColumnMapping = valueColumns
751750 . Zip ( columnMap , static ( column , sourceIndex ) => ( column , sourceIndex ) )
752751 . OrderBy ( p => reflectedType . Columns . IndexOf ( p . column ) )
753- . ToList ( ) ;
752+ . ToChainedBuffer ( ) ;
754753 valueColumns . Clear ( ) ;
755754 columnMap . Clear ( ) ;
756755 columnMap . AddRange ( Enumerable . Range ( 0 , keyLength ) ) ;
0 commit comments