Convert array of objects into a DataTable in C#
By FoxLearn 1/9/2025 2:47:40 AM 35
DEFINE YOUR CLASS
The class must correspond to the structure of the SQL table, including the correct order of the fields as they appear in the database. If the field order doesn’t match, SQL inserts will fail when using the DataTable
.
Here’s an example of an EmployeeDTO
class, though your class will differ based on your needs.
public class EmployeeDTO { public int EmployeeId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime HireDate { get; set; } public decimal Salary { get; set; } public bool IsActive { get; set; } }
IMPLEMENT THE EXTENSION METHOD
Now, implement the following extension method that will allow you to convert your list of objects into a DataTable
.
using System.ComponentModel; using System.Data; namespace MyCode { public static class IEnumerableExtensions { public static DataTable ToDataTable<T>(this IEnumerable<T> data) { // Get the properties of the object type PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T)); DataTable table = new DataTable(); // Add columns to the DataTable based on the object properties foreach (PropertyDescriptor prop in properties) { table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType); } // Add rows to the DataTable foreach (T item in data) { DataRow row = table.NewRow(); foreach (PropertyDescriptor prop in properties) { row[prop.Name] = prop.GetValue(item) ?? DBNull.Value; } table.Rows.Add(row); } return table; } } }
HOW TO USE THE EXTENSION METHOD
Now, you can use this extension method to convert a list of EmployeeDTO
objects into a DataTable
.
List<EmployeeDTO> employees = new List<EmployeeDTO>(); employees.Add(new EmployeeDTO() { EmployeeId = 1, FirstName = "John", LastName = "Doe", HireDate = DateTime.Now, Salary = 50000, IsActive = true }); employees.Add(new EmployeeDTO() { EmployeeId = 2, FirstName = "Jane", LastName = "Smith", HireDate = DateTime.Now, Salary = 55000, IsActive = true }); employees.Add(new EmployeeDTO() { EmployeeId = 3, FirstName = "Bob", LastName = "Brown", HireDate = DateTime.Now, Salary = 47000, IsActive = false }); var dataTable = employees.ToDataTable();
In this example, a list of EmployeeDTO
objects is created, representing employees with their details like ID, name, hire date, salary, and status. Then, the ToDataTable
method is called to convert the list into a DataTable
for potential SQL insert operations.
- How to fix 'Failure sending mail' in C#
- How to Parse a Comma-Separated String from App.config in C#
- How to convert a dictionary to a list in C#
- How to retrieve the Executable Path in C#
- How to validate an IP address in C#
- How to retrieve the Downloads Directory Path in C#
- C# Tutorial
- Dictionary with multiple values per key in C#