Question: I have a query which I get as:

```
var query = Data.Items
            .Where(x => criteria.IsMatch(x))
            .ToList<Item>();

```

This works fine.

However now I want to break up this list into x number of lists, for example 3. Each list will therefore contain 1/3 the amount of elements from query.

Can it be done using LINQ?

Answer: 
You can use PLINQ partitioners to break the results into separate enumerables.

```
var partitioner = Partitioner.Create<Item>(query);
var partitions = partitioner.GetPartitions(3);

```

You'll need to reference the System.Collections.Concurrent namespace. `partitions` will be a list of `IEnumerable<Item>` where each enumerable returns a portion of the query.
I think something like this could work, splitting the list into [`IGrouping`](http://msdn.microsoft.com/en-us/library/bb344977.aspx)s.

```
const int numberOfGroups = 3;

var groups = query
    .Select((item, i) => new { item, i })
    .GroupBy(e => e.i % numberOfGroups);

```