# Reporting: Merge Blocks with MergeObjects

> MergeObjects maps merge block names to IEnumerable property names in the business object hierarchy. The MailMerge engine repeats block content for each data row, supports alternating row styles using NEXT fields, and handles unlimited nesting levels across related objects.

- **Author:** Bjoern Meyer
- **Published:** 2014-06-03
- **Modified:** 2026-03-05
- **Description:** MergeObjects maps merge block names to IEnumerable property names in the business object hierarchy. The MailMerge engine repeats block content for each data row, supports alternating row styles using NEXT fields, and handles unlimited nesting levels across related objects.
- **2 min read** (325 words)
- **Tags:**
  - Reporting
  - Tutorial
- **Web URL:** https://www.textcontrol.com/blog/2014/06/03/reporting-merge-blocks-with-mergeobjects/
- **LLMs URL:** https://www.textcontrol.com/blog/2014/06/03/reporting-merge-blocks-with-mergeobjects/llms.txt
- **LLMs-Full URL:** https://www.textcontrol.com/blog/2014/06/03/reporting-merge-blocks-with-mergeobjects/llms-full.txt

---

[MergeObjects](https://docs.textcontrol.com/textcontrol/windows-forms/ref.txtextcontrol.documentserver.mailmerge.mergeobjects.method.htm) is used to merge a collection of *IEnumerable* objects. [This blog article](https://www.textcontrol.com/blog/2014/05/09/reporting-expense-report-with-business-objects/llms-full.txt) gives a good overview of how to use MergeObjects with typical business objects. The used template is described in detail in [this entry](https://www.textcontrol.com/blog/2014/05/18/part-2-expense-report-template-in-detail/llms-full.txt).

This article explains the merge block in detail. Based on the above sample, the merge block repeats all expenses in an expense report:

![Merge blocks with MergeObjects](https://s1-www.textcontrol.com/assets/dist/blog/2014/06/03/a/assets/repeating_blocks.webp "Merge blocks with MergeObjects")The below class diagram shows the business object. The merge block data source *LineItem* and the property *LineItems* is highlighted:

![Merge blocks with MergeObjects](https://s1-www.textcontrol.com/assets/dist/blog/2014/06/03/a/assets/tx_architecture.webp "Merge blocks with MergeObjects")The complete report is repeated based on the number of passed objects of type *Expense* in the collection *Expenses*. The merge block name must match the property name *LineItems*:

![Merge blocks with MergeObjects](https://s1-www.textcontrol.com/assets/dist/blog/2014/06/03/a/assets/tx_screen_block.webp "Merge blocks with MergeObjects")In this sample, the repeating block consists of two similar table rows with same columns and merge fields, but a different background color to realize alternating colors. At the end of row 1, a *NEXT* field increases the current data row.

![Merge blocks with MergeObjects](https://s1-www.textcontrol.com/assets/dist/blog/2014/06/03/a/assets/repeating_blocks.webp "Merge blocks with MergeObjects")Text Control's Reporting engine [MailMerge](https://docs.textcontrol.com/textcontrol/windows-forms/ref.txtextcontrol.documentserver.mailmerge.class.htm) is trying to match merge block names with encapsulated class names in the business object automatically. Merge blocks can be nested in unlimited levels as well. You simply pass a pre-filled business object to *MergeObjects* and TX Text Control is doing the work for you.

---

## About Bjoern Meyer

As CEO, Bjoern is the visionary behind our strategic direction and business development, bridging the gap between our customers and engineering teams. His deep passion for coding and web technologies drives the creation of innovative products. If you're at a tech conference, be sure to stop by our booth - you'll most likely meet Bjoern in person. With an advanced graduate degree (Dipl. Inf.) in Computer Science, specializing in AI, from the University of Bremen, Bjoern brings significant expertise to his role. In his spare time, Bjoern enjoys running, paragliding, mountain biking, and playing the piano.

- [LinkedIn](https://www.linkedin.com/in/bjoernmeyer/)
- [X](https://x.com/txbjoern)
- [GitHub](https://github.com/bjoerntx)

---

## Related Posts

- [Creating Your First ASP.NET Reporting Application](https://www.textcontrol.com/blog/2020/01/01/creating-your-first-aspnet-reporting-application/llms.txt)
- [New Online Sample: Build your First Report](https://www.textcontrol.com/blog/2019/07/03/build-your-first-report/llms.txt)
- [Create your First Document with ReportingCloud](https://www.textcontrol.com/blog/2019/02/19/create-your-first-document-with-reportingcloud/llms.txt)
- [MailMerge: Starting Each Merge Block on a New Page](https://www.textcontrol.com/blog/2016/09/09/mailmerge-starting-each-merge-block-on-a-new-page/llms.txt)
- [Using MailMerge with JSON Data](https://www.textcontrol.com/blog/2015/08/04/using-mailmerge-with-json-data/llms.txt)
- [Merging Documents with RESTful Web API's](https://www.textcontrol.com/blog/2015/07/31/merging-documents-with-restful-web-apis/llms.txt)
- [Windows Forms: Printing Multiple Pages Per Sheet](https://www.textcontrol.com/blog/2015/07/24/windows-forms-printing-multiple-pages-per-sheet/llms.txt)
- [Inserting Watermark Images to All Pages Dynamically](https://www.textcontrol.com/blog/2015/07/17/inserting-watermark-images-to-all-pages-dynamically/llms.txt)
- [Reporting: Sorting Merge Block Rows by Column Name](https://www.textcontrol.com/blog/2015/07/15/reporting-sorting-merge-block-rows-by-column-name/llms.txt)
- [MailMerge with the Entity Framework Using Database First](https://www.textcontrol.com/blog/2015/06/24/mailmerge-with-the-entity-framework-using-database-first/llms.txt)
- [Checked and Unchecked Check Boxes with IF Fields](https://www.textcontrol.com/blog/2015/03/25/checked-and-unchecked-check-boxes-with-if-fields/llms.txt)
- [Reporting: Conditional Formatted Text Blocks](https://www.textcontrol.com/blog/2015/03/13/reporting-conditional-formatted-text-blocks/llms.txt)
- [Reporting Best Practices and How-To Guides](https://www.textcontrol.com/blog/2015/02/05/reporting-best-practices-and-how-to-guides/llms.txt)
- [MailMerge: Master Table and Client Tables](https://www.textcontrol.com/blog/2015/01/28/mailmerge-master-table-and-client-tables/llms.txt)
- [MailMerge: Formatting Numeric Strings in Merge Fields](https://www.textcontrol.com/blog/2015/01/22/mailmerge-formatting-numeric-strings-in-merge-fields/llms.txt)
- [MailMerge: Merge CheckBoxes During the Merge Process](https://www.textcontrol.com/blog/2015/01/12/mailmerge-merge-checkboxes-during-the-merge-process/llms.txt)
- [MailMerge: Conditional INCLUDETEXT Fields](https://www.textcontrol.com/blog/2015/01/08/mailmerge-conditional-includetext-fields/llms.txt)
- [HTML5 Technical Considerations - The Concept Explained](https://www.textcontrol.com/blog/2014/10/16/html5-technical-considerations-the-concept-explained/llms.txt)
- [TX Text Control Web: Attaching Events to Ribbon Elements](https://www.textcontrol.com/blog/2014/10/07/tx-text-control-web-attaching-events-to-ribbon-elements/llms.txt)
- [TX Text Control Web: Customize the Ribbon Bar](https://www.textcontrol.com/blog/2014/10/03/tx-text-control-web-customize-the-ribbon-bar/llms.txt)
- [Text Control Web - Fundamental Concepts: The Data Source](https://www.textcontrol.com/blog/2014/10/02/text-control-web-fundamental-concepts-the-data-source/llms.txt)
- [Reporting: Removing Empty Table Rows](https://www.textcontrol.com/blog/2014/09/30/reporting-removing-empty-table-rows/llms.txt)
- [MS Word Content Controls Field Adapter Classes](https://www.textcontrol.com/blog/2014/08/05/ms-word-content-controls-field-adapter-classes/llms.txt)
- [Reporting: Merge Blocks and Structured Numbered Lists](https://www.textcontrol.com/blog/2014/07/29/reporting-merge-blocks-and-structured-numbered-lists/llms.txt)
- [Creating Avery Labels Using Text Control Reporting](https://www.textcontrol.com/blog/2014/07/22/creating-avery-labels-using-text-control-reporting/llms.txt)
