C# DataTable与Model互转的示例代码

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的属性名保持一致,否则可能会出现数据丢失或者转换失败的情况。

后端开发标签