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.
You can use `Skip` and `Take` in a simple `for` to accomplish what you want

```
   var groupSize = (int)Math.Ceiling(query.Count() / 3d);
   var result = new List<List<Item>>();
   for (var j = 0; j < 3; j++)
      result.Add(query.Skip(j * groupSize).Take(groupSize).ToList());

```