1010
1111namespace Simple . Data
1212{
13+ using System . Threading . Tasks ;
14+
1315 public class SimpleQuery : DynamicObject , IEnumerable
1416 {
1517 private DataStrategy _dataStrategy ;
@@ -177,17 +179,14 @@ public SimpleQuery Take(int take)
177179 return new SimpleQuery ( this , takeCount : take ) ;
178180 }
179181
180- protected IEnumerable < dynamic > Records
182+ protected IEnumerable < dynamic > Run ( )
181183 {
182- get
183- {
184- return _adapter . RunQuery ( this ) . Select ( d => new SimpleRecord ( d , _tableName , _dataStrategy ) ) ;
185- }
184+ return _adapter . RunQuery ( this ) . Select ( d => new SimpleRecord ( d , _tableName , _dataStrategy ) ) ;
186185 }
187186
188187 public IEnumerator GetEnumerator ( )
189188 {
190- return Records . GetEnumerator ( ) ;
189+ return Run ( ) . GetEnumerator ( ) ;
191190 }
192191
193192 public override bool TryInvokeMember ( InvokeMemberBinder binder , object [ ] args , out object result )
@@ -325,12 +324,12 @@ private SimpleQuery ParseThenBy(string methodName)
325324
326325 public IEnumerable < T > Cast < T > ( )
327326 {
328- return Records . Select ( item => ( T ) item ) ;
327+ return Run ( ) . Select ( item => ( T ) item ) ;
329328 }
330329
331330 public IEnumerable < T > OfType < T > ( )
332331 {
333- foreach ( var item in Records )
332+ foreach ( var item in Run ( ) )
334333 {
335334 bool success = true ;
336335 T cast ;
@@ -352,12 +351,12 @@ public IEnumerable<T> OfType<T>()
352351
353352 public IList < dynamic > ToList ( )
354353 {
355- return Records . ToList ( ) ;
354+ return Run ( ) . ToList ( ) ;
356355 }
357356
358357 public dynamic [ ] ToArray ( )
359358 {
360- return Records . ToArray ( ) ;
359+ return Run ( ) . ToArray ( ) ;
361360 }
362361
363362 public dynamic ToScalar ( )
@@ -443,12 +442,12 @@ public T ToScalarOrDefault<T>()
443442
444443 public dynamic First ( )
445444 {
446- return Records . First ( ) ;
445+ return Run ( ) . First ( ) ;
447446 }
448447
449448 public dynamic FirstOrDefault ( )
450449 {
451- return Records . FirstOrDefault ( ) ;
450+ return Run ( ) . FirstOrDefault ( ) ;
452451 }
453452
454453 public T First < T > ( )
@@ -473,12 +472,12 @@ public T FirstOrDefault<T>(Func<T, bool> predicate)
473472
474473 public dynamic Single ( )
475474 {
476- return Records . First ( ) ;
475+ return Run ( ) . First ( ) ;
477476 }
478477
479478 public dynamic SingleOrDefault ( )
480479 {
481- return Records . FirstOrDefault ( ) ;
480+ return Run ( ) . FirstOrDefault ( ) ;
482481 }
483482
484483 public T Single < T > ( )
@@ -548,5 +547,10 @@ public IObservable<dynamic> AsObservable()
548547 }
549548
550549 private Func < IObservable < dynamic > > _asObservableImplementation ;
550+
551+ public Task < IEnumerable < dynamic > > RunTask ( )
552+ {
553+ return Task . Factory . StartNew < IEnumerable < dynamic > > ( Run ) ;
554+ }
551555 }
552556}
0 commit comments