LINQ channel icon LINQ · 26 published articles

Using LINQ Chunk to Split Data

In this post I will teach you how to split data within collections using LINQ in .NET. All with live working demo.

Using LINQ Chunk to Split Data
On this page

What you'll learn

In this article, let's learn about how to use Chunk in LINQ in .NET.

Note: If you have not done so already, I recommend you read the article on Using LINQ Distinct to Select Specific Data in Collections.

Why it matters

Splitting a large collection into fixed-size batches is a common need, especially for pagination, bulk API calls, or batch processing. Without Chunk(), you'd track an index and manually slice the list. Chunk() expresses this intent clearly and concisely with minimal code.

Implementation

Split collections into smaller collections using Chunk

Let's partition data into other format. We can split our (Larger) Collection into array of smaller collections using Chunk() method. This will give list of data array. What Chunk(n) does is that it takes first n items from collection and build an array with that items and put them into first item of our final list. Then it takes second n items from collection build an array and put it into second item of our final list forming collection of collections.

C#


List<Product> products = GetProducts();

//Method Syntax
List<Product[]> partitionedProducts = products
                                      .Chunk(1)
                                      .ToList();
                    
//Query Syntax
List<Product[]> partitionedProducts = (from product in products select product)
                                      .Chunk(1)
                                      .ToList();
            
Live demo: LINQ Chunk Clause Demo — interactive controls are available when the page loads.

Summary

In this article we learn't how to split data within collection using Chunk. This can be used for pagination for small in-memory collections to improve user experience. All these can be used with any IEnumerable or IQueryable types.