SubQueryState.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Ant.DbExpressions;
  2. using Ant.Query.Mapping;
  3. using Ant.Query.QueryExpressions;
  4. using System;
  5. using System.Linq;
  6. namespace Ant.Query.QueryState
  7. {
  8. internal abstract class SubQueryState : QueryStateBase
  9. {
  10. protected SubQueryState(ResultElement resultElement)
  11. : base(resultElement)
  12. {
  13. }
  14. public override IQueryState Accept(WhereExpression exp)
  15. {
  16. IQueryState state = this.AsSubQueryState();
  17. return state.Accept(exp);
  18. }
  19. public override IQueryState Accept(OrderExpression exp)
  20. {
  21. IQueryState state = this.AsSubQueryState();
  22. return state.Accept(exp);
  23. }
  24. public override IQueryState Accept(SelectExpression exp)
  25. {
  26. IQueryState queryState = this.AsSubQueryState();
  27. return queryState.Accept(exp);
  28. }
  29. public override IQueryState Accept(SkipExpression exp)
  30. {
  31. GeneralQueryState subQueryState = this.AsSubQueryState();
  32. SkipQueryState state = new SkipQueryState(subQueryState.Result, exp.Count);
  33. return state;
  34. }
  35. public override IQueryState Accept(TakeExpression exp)
  36. {
  37. GeneralQueryState subQueryState = this.AsSubQueryState();
  38. TakeQueryState state = new TakeQueryState(subQueryState.Result, exp.Count);
  39. return state;
  40. }
  41. public override IQueryState Accept(AggregateQueryExpression exp)
  42. {
  43. IQueryState subQueryState = this.AsSubQueryState();
  44. IQueryState state = subQueryState.Accept(exp);
  45. return state;
  46. }
  47. }
  48. }