datatable转list
时间: 2023-08-07 12:06:10 浏览: 143
要将DataTable转换为List,可以使用以下方法之一:
方法一:使用LINQ查询
可以使用LINQ查询将DataTable转换为List。首先,使用DataTable的AsEnumerable方法将DataTable转换为可枚举的行集合,然后使用LINQ的Select方法将每一行转换为目标类型的对象,并将这些对象添加到List中。
```csharp
List<MyClass> list = table.AsEnumerable().Select(row =>
{
MyClass obj = new MyClass();
obj.Field1 = row.Field<type>("ColumnName1");
obj.Field2 = row.Field<type>("ColumnName2");
obj.Field3 = row.Field<type>("ColumnName3");
return obj;
}).ToList();
```
方法二:使用泛型方法和反射
可以创建一个泛型方法,该方法可以将DataTable转换为List。该方法使用反射来动态设置对象的属性值。
```csharp
public static List<T> ConvertDataTableToList<T>(DataTable table) where T : class, new()
{
List<T> list = new List<T>();
foreach (DataRow row in table.Rows)
{
T obj = new T();
foreach (PropertyInfo info in obj.GetType().GetProperties())
{
if (table.Columns.Contains(info.Name))
{
if (row\[info.Name\] != DBNull.Value)
{
info.SetValue(obj, row\[info.Name\], null);
}
}
}
list.Add(obj);
}
return list;
}
```
使用以上方法之一,您可以将DataTable转换为List。请根据您的需求选择适合的方法。
#### 引用[.reference_title]
- *1* *2* *3* [C#中将DataTable转化成ListT的方法解析](https://blog.csdn.net/naer_chongya/article/details/130422703)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文