You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Malcolm Groves edited this page Feb 17, 2014
·
3 revisions
Sometimes you do not want to query a separate collection of Integers, but rather want to query a range of values.
For example, if you want to enumerate all Even numbered values between 100 and 200, you can do something like this:
for I in Range(100, 200).Even do
Note, there was no need to call Query or From, as the Range method returns a Bound Integer Query.
Also note, FluentQuery Ranges are Lazy, that is, the next value in the range is generated on request.
If you want to enumerate the same values but in reverse, just swap the values:
for I in Range(200, 100).Even do
These can of course be used with Terminating Integer operations, for example:
I := Range(100, 200).Even.Sum;
Gives the Sum of all even values between 100 and 200. Likewise, the following code results in MyList containing a reference to a TList of all even values between 100 and 200.:
MyList := Range(100, 200).Even.ToTList;
Default Values
The first parameter (Start) has a default value of 0, while the second parameter has a default value of MaxInt. Therefore, this code will enumerate all Odd values between 100 and MaxInt:
for I in Range(100).Odd do
While this code will enumerate all Odd values between 0 and MaxIn: