How to use lists and arrays as a data source for the report

2016-04-18

Most of the  modern reporting tools allow you to use almost any database. However, not all of them can work with lists or arrays of objects as a data source. In this article I'll show how to do it on the example of FastReport .Net reporting tool.

I will mention some important points:

• object fields from the list should be described as a public property to be visible in the report;

• in addition to the lists you can send in your report data from any iEnumerable collections;

• to transfer linq query results in the report you need to convert list using ToArray method.

Create a Windows Forms application.
Give a list of categories in the report. For each category there will be added the list of products.
Declare variables:

1
2
private List<Category> FBusinessObject;
private Report FReport;

As the name suggests, it is a list of categories and report object.

So, add a class of products:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Product
 {
 private string FName;
 private decimal FUnitPrice;
 
 public string Name
 {
 get { return FName; }
 }
 
 public decimal UnitPrice
 {
 get { return FUnitPrice; }
 }
 
 public Product(string name, decimal unitPrice)
 {
 FName = name;
 FUnitPrice = unitPrice;
 }
 }

As you can see, the fields of the object declared as public.
Now add the class of categories:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Category
 {
 private string FName;
 private string FDescription;
 private List<Product> FProducts;
 
 public string Name
 {
 get { return FName; }
 }
 
 public string Description
 {
 get { return FDescription; }
 }
 
 public List<Product> Products
 {
 get { return FProducts; }
 }
 
 public Category(string name, string description)
 {
 FName = name;
 FDescription = description;
 FProducts = new List<Product>();
 }
 }

One of the fields of the object Category is a list of products. That is, a list of categories is an array of arrays.

Let's create a data source:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void CreateDataSource()
 {
 FBusinessObject = new List<Category>(); //Create list of categories
 
 Category category = new Category("Beverages", "Soft drinks, coffees, teas, beers"); //Create new instance of category
 category.Products.Add(new Product("Chai", 18m)); //Add new product to category
 category.Products.Add(new Product("Chang", 19m));
 category.Products.Add(new Product("Ipoh coffee", 46m));
 
 FBusinessObject.Add(category); //Add the category to the List
 
 category = new Category("Confections", "Desserts, candies, and sweet breads");
 category.Products.Add(new Product("Chocolade", 12.75m));
 category.Products.Add(new Product("Scottish Longbreads", 12.5m));
 category.Products.Add(new Product("Tarte au sucre", 49.3m));
 
 FBusinessObject.Add(category);
 
 category = new Category("Seafood", "Seaweed and fish");
 category.Products.Add(new Product("Boston Crab Meat", 18.4m));
 category.Products.Add(new Product("Red caviar", 15m));
 
 FBusinessObject.Add(category);
 }

From the comments it is clear that a list of objects Category is created. Then create a new category and add the desired number of products to it. Then add the category in the categories list. So we add a few categories with products.

We have created a data source. Now you need to register the report with the help of RegisterData method:

1
2
3
4
public void RegisterData()
 {
 FReport.RegisterData(FBusinessObject, "Categories");
 }

This method will make your list available in the report with the name: "Categories".

Add a method of running the report in the designer:

1
2
3
4
5
6
7
public void DesignReport()
 {
 FReport = new Report();
 CreateDataSource();
 RegisterData();
 FReport.Design();
 }

Here we have created an instance of the report object and data source. Also we registered data source and opened the report in the designer.

Add a button of the method of calling the report designer:

1
2
3
4
 public void button1_Click(object sender, EventArgs e)
 {
 DesignReport();
 }

 In the report designer, you need to select a data source in the menu Data -> Choose Report Data ...

 

Create a simple report of the Master-Detail type:

 

And run the report in preview mode:

 

To sum up:  FastReport .Net once again proved being a flexible, modern product. You can use necessary data from your application without having to worry about converting them into DataTable.

.NET .NET FastReport FastReport
21 de setembro de 2026

Como configurar um agente de IA para o FastReport .NET: arquitetura, limitações e migração de relatórios

Recursos de IA para o FastReport .NET: migração automatizada de relatórios do Crystal Reports e do StimulSoft, refatoração para .NET 8/9, geração de modelos e proteção contra vazamento de dados.
08 de setembro de 2026

Respostas às perguntas frequentes sobre o formato FP3

Vamos detalhar 11 perguntas comuns sobre o formato FP3: o que são esses arquivos, como eles diferem dos arquivos FR3, quais programas podem abri-los e como convertê-los em PDF.
04 de setembro de 2026

Como exportar um relatório do FastReport .NET para o formato DXF

Neste artigo, veremos os métodos de exportação de um relatório para o formato DXF e também analisaremos como fica o resultado obtido após a abertura do arquivo em um aplicativo CAD.

© 1998-2026 Fast Reports Inc.