C# DataTable与Model互转的示例代码
1. DataTable与Model的概述
在C#开发中,DataTable是一种常用的数据结构,用于存储和操作数据。而Model,则是开发中常使用的数据模型,用于描述数据的结构。在开发过程中,经常需要将DataTable和Model之间进行转换。本文将介绍如何在C#中进行DataTable与Model的互转。
2. DataTable转换为Model
将DataTable转换为Model,可以通过遍历DataTable的每一行,然后根据Model的定义,将每一行的数据赋值给相应的Model属性。下面是一个示例代码:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
public List<Person> ConvertDataTableToModel(DataTable dataTable)
{
List<Person> persons = new List<Person>();
foreach (DataRow row in dataTable.Rows)
{
Person person = new Person();
person.Name = row["Name"].ToString();
person.Age = int.Parse(row["Age"].ToString());
person.Address = row["Address"].ToString();
persons.Add(person);
}
return persons;
}
在上面的示例代码中,我们定义了一个Person类作为Model,包含了Name、Age和Address属性。然后定义了一个ConvertDataTableToModel方法,用于将DataTable转换为Model。
2.1 通过遍历DataTable的每一行
在转换过程中,我们遍历DataTable的每一行,使用foreach循环来遍历dataTable.Rows集合。每一行对应一个DataRow对象。
foreach (DataRow row in dataTable.Rows)
{
// ...
}
2.2 通过属性名称获取数据
在遍历每一行时,我们可以通过row["列名"]来获取对应的数据。这里的"列名"需要与DataTable中的列名保持一致。然后通过row["列名"].ToString()将获取的数据转换为相应的类型。
person.Name = row["Name"].ToString();
person.Age = int.Parse(row["Age"].ToString());
person.Address = row["Address"].ToString();
在上面的示例代码中,我们将从每一行中获取的数据赋值给相应的Person属性。
3. Model转换为DataTable
将Model转换为DataTable,可以通过创建一个空的DataTable,然后使用Model的属性定义表的列,在将Model的数据赋值给DataTable的每一行。下面是一个示例代码:
public DataTable ConvertModelToDataTable(List<Person> persons)
{
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
dataTable.Columns.Add("Address", typeof(string));
foreach (Person person in persons)
{
DataRow row = dataTable.NewRow();
row["Name"] = person.Name;
row["Age"] = person.Age;
row["Address"] = person.Address;
dataTable.Rows.Add(row);
}
return dataTable;
}
在上面的示例代码中,我们定义了一个ConvertModelToDataTable方法,用于将Model转换为DataTable。首先,我们创建了一个空的DataTable对象。然后使用dataTable.Columns.Add方法来定义DataTable的列,列名和数据类型需要与Model的属性定义保持一致。接下来,使用foreach循环遍历persons列表,将每个person对象的属性值赋值给DataTable的每一行。
3.1 创建空的DataTable
在转换过程中,我们首先创建一个空的DataTable对象。可以通过DataTable的无参构造函数来创建一个空的DataTable。
DataTable dataTable = new DataTable();
3.2 定义DataTable的列
在DataTable中,我们使用Columns属性来定义DataTable的列。使用dataTable.Columns.Add方法来添加列,需要指定列名和数据类型。在这个示例中,我们为Person的Name、Age和Address属性分别定义了一个列。
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
dataTable.Columns.Add("Address", typeof(string));
3.3 将数据赋值给DataTable的每一行
在遍历persons列表时,我们使用DataTable的NewRow方法来创建一个新的DataRow对象,然后将Model的属性值赋值给DataRow的相应列。
DataRow row = dataTable.NewRow();
row["Name"] = person.Name;
row["Age"] = person.Age;
row["Address"] = person.Address;
dataTable.Rows.Add(row);
4. 总结
本文介绍了如何在C#中进行DataTable与Model的互转。通过遍历DataTable的每一行,我们可以将DataTable转换为Model,将每一行的数据赋值给相应的Model属性。而通过创建一个空的DataTable,并定义列的名称和数据类型,我们可以将Model转换为DataTable,将每个Model对象的属性值赋值给DataTable的每一行。
需要注意的是,在进行转换时,应该确保DataTable的列名和Model的属性名保持一致,否则可能会出现数据丢失或者转换失败的情况。