DataTable,转换list集合格式
时间: 2023-07-06 14:26:57 浏览: 59
可以使用 LINQ 将 DataTable 转换为 List 集合。以下是一个示例代码:
```csharp
using System.Linq;
using System.Data;
// 假设有一个 DataTable 叫做 dt
List<DataRow> rows = dt.AsEnumerable().ToList();
List<Dictionary<string, object>> rowsAsDict = rows
.Select(r => dt.Columns.Cast<DataColumn>()
.ToDictionary(c => c.ColumnName, c => r[c])
).ToList();
```
第一行将 DataTable 中的所有行转换为 DataRow 类型的 List 集合。
第二行将 DataRow 类型的 List 集合转换为 Dictionary<string, object> 类型的 List 集合,其中每个 Dictionary 对象表示一行数据,键为列名,值为该行对应列的值。
您可以根据需求选择转换成 DataRow 类型的 List 集合或者 Dictionary<string, object> 类型的 List 集合。
相关问题
C#DataTable转换string集合
可以通过以下代码将 C# DataTable 转换为 string 集合:
```csharp
DataTable dataTable = new DataTable();
// 填充 DataTable...
List<string> stringList = new List<string>();
foreach (DataRow row in dataTable.Rows)
{
string rowString = string.Join(",", row.ItemArray);
stringList.Add(rowString);
}
```
这将遍历 DataTable 的每一行,并将每一行转换为逗号分隔的字符串,然后将其添加到 string 集合中。你可以根据需要调整分隔符或格式。
List转换成DataTable怎么转换
将 List 转换为 DataTable 可以使用以下代码:
1. 定义 DataTable 的结构,包括列名和数据类型:
```csharp
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Id", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
```
2. 遍历 List 中的数据,将每一行数据添加到 DataTable 中:
```csharp
foreach (var item in list)
{
DataRow row = dataTable.NewRow();
row["Id"] = item.Id;
row["Name"] = item.Name;
row["Age"] = item.Age;
dataTable.Rows.Add(row);
}
```
其中,NewRow() 方法用于创建一个新的 DataRow 对象,然后将 List 中的每一个对象的属性值赋值给 DataRow 中对应的列,最后将 DataRow 添加到 DataTable 中的 Rows 集合中。
注意,如果 List 中的对象属性名与 DataTable 中的列名不一致,需要在赋值时使用正确的列名。
转换完成后,就可以使用 DataTable 中的数据进行后续操作了。
另外,如果使用的是 .NET Framework 4.6 或更高版本,可以使用 DataTable 的扩展方法 CopyToDataTable() 直接将 List 转换为 DataTable,代码如下:
```csharp
DataTable dataTable = list.CopyToDataTable();
```
该方法会自动根据 List 中对象的属性来创建 DataTable 的结构和数据。但是需要注意的是,如果 List 中没有任何数据,该方法会抛出异常。