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
26 Ekim 2026, Pazartesi

Delphi’de İlerleme Çubuğu: FastReport VCL’den TfrProgressBar ve TfrxProgressBar Bileşenleri

FastReport VCL'deki TfrProgressBar ve TfrxProgressBar bileşenlerini daha yakından inceleyelim: ilerleme ölçeğini, eşik değerlerini ve işaretçileri yapılandırma, verilere bağlama ve bir Delphi örneği.
26 Ekim 2026, Pazartesi

TfrImageComboBox: FastReport VCL’de resim ve metin başlıklarını içeren bir açılır liste

FastEditors VCL'den TfrImageComboBox: FastReport VCL için simgeler ve etiketler içeren bir açılır liste. Delphi'de özellikler, olaylar ve kullanım örnekleri.
23 Ekim 2026, Cuma

FastGrid’in iç yapısı: Delphi ızgara bileşeninin View nesnesi, sütunlar ve olaylar

FastGrid'in iç yapısı: View nesnesi, Appearance özelliği, sütunlar, olaylar ve Delphi'de DB ve Unbound veri işleme modları. GridDemo.dpr demo projesini örnek alarak inceleme.

© 1998-2026 Fast Reports Inc.