将IEnumerable
转换为DataTable
的原理是通过DataTable
的Columns
集合定义表结构,然后逐行将IEnumerable
的元素添加到DataTable
中。
使用DataTable
的Columns
和Rows
属性,以及DataRow
的ItemArray
属性,逐行逐列地填充数据。
创建DataTable
对象
DataTable
类的构造函数创建一个空的数据表。定义表结构
Columns
属性添加表的列,定义数据表的结构。遍历IEnumerable
foreach
循环遍历IEnumerable
,逐行添加数据。创建DataRow
IEnumerable
的元素,创建一个DataRow
对象。填充数据
IEnumerable
的元素逐列填充到DataRow
的ItemArray
属性中。添加至DataTable
Rows
属性将每个DataRow
对象添加至DataTable
。using System;
using System.Collections.Generic;
using System.Data;
class Program
{
static void Main()
{
// 示例数据
IEnumerable<Person> persons = GetSampleData();
// 步骤 1: 创建DataTable对象
DataTable dataTable = new DataTable("PersonTable");
// 步骤 2: 定义表结构
dataTable.Columns.Add("Id", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
// 步骤 3-6: 遍历IEnumerable、创建DataRow、填充数据、添加至DataTable
foreach (var person in persons)
{
DataRow row = dataTable.NewRow();
row["Id"] = person.Id;
row["Name"] = person.Name;
row["Age"] = person.Age;
dataTable.Rows.Add(row);
}
}
// 示例类
class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
// 获取示例数据
static IEnumerable<Person> GetSampleData()
{
return new List<Person>
{
new Person { Id = 1, Name = "Alice", Age = 25 },
new Person { Id = 2, Name = "Bob", Age = 30 },
new Person { Id = 3, Name = "Charlie", Age = 22 }
};
}
}
列名匹配
DataTable
的列名与IEnumerable
元素的属性名一致,以便正确填充数据。数据类型匹配
DataTable
的列的数据类型与IEnumerable
元素的属性的数据类型一致,以防数据转换错误。性能考虑
SqlBulkCopy
等更高效的方式处理数据导入。将IEnumerable
转换为DataTable
是在C#中常见的操作,有助于将内存中的数据集合以DataTable
的形式传递给数据库或其他组件。通过了解原理、方法和步骤,并参考实例源代码,开发者能够更灵活地处理这一数据转换操作。