Skip to content
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.

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:

for I in Range.Even do

Clone this wiki locally