#Calculating ranges

> I need split the list I get from the select into multiple list so I can use Parallel.For() to generate the next query in different threads.

Nope. You don't need it. Use `Parallel.ForEach` that automatically can distribute the load on multiple threads if necessary or use the `Partitioner` to calculate the ranges e.g.:

    var partitions = Partitioner
    	.Create(fromInclusive: 0, toExclusive: 100, rangeSize: 30)
    	.GetDynamicPartitions();

the result

<!-- language: lang-none -->

>     Item1  Item2
>     
>         0     30 
>        30     60 
>        60     90 
>        90    100

---

#Improvable

Don't do everything in a single method. Write one method to get the data from the server and another one to process it and/or calculate the partitions. You need to pay more attentions to the separation of concerns. Mixing all features in a single method makes it super hard to maintain and to test.