@@ -215,26 +215,15 @@ public virtual IEnumerable<Subclass> SubclassIterator
215
215
{
216
216
get
217
217
{
218
- IEnumerable < Subclass > [ ] iters = new IEnumerable < Subclass > [ subclasses . Count + 1 ] ;
219
- int i = 0 ;
220
- foreach ( Subclass subclass in subclasses )
221
- iters [ i ++ ] = subclass . SubclassIterator ;
222
-
223
- iters [ i ] = subclasses ;
224
- return new JoinedEnumerable < Subclass > ( iters ) ;
218
+ return subclasses . SelectMany ( s => s . SubclassIterator ) . Concat ( subclasses ) ;
225
219
}
226
220
}
227
221
228
222
public virtual IEnumerable < PersistentClass > SubclassClosureIterator
229
223
{
230
224
get
231
225
{
232
- List < IEnumerable < PersistentClass > > iters = new List < IEnumerable < PersistentClass > > ( ) ;
233
- iters . Add ( new SingletonEnumerable < PersistentClass > ( this ) ) ;
234
- foreach ( Subclass clazz in SubclassIterator )
235
- iters . Add ( clazz . SubclassClosureIterator ) ;
236
-
237
- return new JoinedEnumerable < PersistentClass > ( iters ) ;
226
+ return new [ ] { this } . Concat ( SubclassIterator . SelectMany ( x => x . SubclassClosureIterator ) ) ;
238
227
}
239
228
}
240
229
@@ -322,19 +311,15 @@ public virtual IEnumerable<Property> SubclassPropertyClosureIterator
322
311
{
323
312
get
324
313
{
325
- List < IEnumerable < Property > > iters = new List < IEnumerable < Property > > ( ) ;
326
- iters . Add ( PropertyClosureIterator ) ;
327
- iters . Add ( subclassProperties ) ;
328
- foreach ( Join join in subclassJoins )
329
- iters . Add ( join . PropertyIterator ) ;
330
-
331
- return new JoinedEnumerable < Property > ( iters ) ;
314
+ return PropertyClosureIterator
315
+ . Concat ( subclassProperties )
316
+ . Concat ( subclassJoins . SelectMany ( x => x . PropertyIterator ) ) ;
332
317
}
333
318
}
334
319
335
320
public virtual IEnumerable < Join > SubclassJoinClosureIterator
336
321
{
337
- get { return new JoinedEnumerable < Join > ( JoinClosureIterator , subclassJoins ) ; }
322
+ get { return JoinClosureIterator . Concat ( subclassJoins ) ; }
338
323
}
339
324
340
325
/// <summary>
@@ -345,7 +330,7 @@ public virtual IEnumerable<Join> SubclassJoinClosureIterator
345
330
/// <remarks>It adds the TableClosureIterator and the subclassTables into the IEnumerable.</remarks>
346
331
public virtual IEnumerable < Table > SubclassTableClosureIterator
347
332
{
348
- get { return new JoinedEnumerable < Table > ( TableClosureIterator , subclassTables ) ; }
333
+ get { return TableClosureIterator . Concat ( subclassTables ) ; }
349
334
}
350
335
351
336
public bool IsLazy
@@ -455,12 +440,7 @@ public virtual IEnumerable<Property> PropertyIterator
455
440
{
456
441
get
457
442
{
458
- List < IEnumerable < Property > > iterators = new List < IEnumerable < Property > > ( ) ;
459
- iterators . Add ( properties ) ;
460
- foreach ( Join join in joins )
461
- iterators . Add ( join . PropertyIterator ) ;
462
-
463
- return new JoinedEnumerable < Property > ( iterators ) ;
443
+ return properties . Concat ( joins . SelectMany ( x => x . PropertyIterator ) ) ;
464
444
}
465
445
}
466
446
0 commit comments