首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DataTable to List <T>转换

您好!您的问题是关于将 DataTable 转换为 List<T> 的问题。

在 C# 中,可以使用 LINQ 技术将 DataTable 转换为 List<T>。以下是一个示例代码:

代码语言:csharp
复制
using System.Data;
using System.Linq;

public static List<T> DataTableToList<T>(DataTable table)
{
    List<T> list = new List<T>();

    foreach (DataRow row in table.Rows)
    {
        T item = GetItem<T>(row);
        list.Add(item);
    }

    return list;
}

private static T GetItem<T>(DataRow row)
{
    Type type = typeof(T);
    T item = Activator.CreateInstance<T>();
    foreach (DataColumn column in row.Table.Columns)
    {
        PropertyInfo property = type.GetProperty(column.ColumnName);
        if (property != null && row[column] != DBNull.Value)
        {
            property.SetValue(item, row[column], null);
        }
    }
    return item;
}

在这个示例中,我们定义了一个泛型方法 DataTableToList<T>,它接受一个 DataTable 参数,并返回一个 List<T> 类型的结果。在方法中,我们遍历 DataTable 中的每一行,并使用 GetItem<T> 方法将每一行转换为对应的 T 类型的对象,并将其添加到 List<T> 中。最后,我们返回 List<T> 作为结果。

GetItem<T> 方法用于将 DataRow 转换为对应的 T 类型的对象。在方法中,我们首先获取 T 类型的 PropertyInfo 对象,然后将 DataRow 中的每一列的值设置到对应的属性中。最后,我们返回 T 类型的对象。

需要注意的是,在使用这个方法时,需要确保 DataTable 中的列名和 T 类型的属性名称相同,否则无法正确转换。

希望这个答案能够帮助您解决问题!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#实现WinForm DataGridView控件支持叠加数据绑定

我们都知道WinForm DataGridView控件支持数据绑定,使用方法很简单,只需将DataSource属性指定到相应的数据源即可,但需注意数据源必须支持IListSource类型,这里说的是支持,而不是实现,是因为他既可以是实现了IListSource的类型,也可以是实现了IList的类型,例如:List类型,DataTable类型等,这里就不一一列举了,今天我主要实现的功能如标题所描述的:实现WinForm DataGridView控件支持叠加数据绑定,或者说是附加数据功能,什么意思呢?说白了就是支持数据的多次绑定,标准的绑定方法只支持单一绑定,即每次绑定均会清除原来的数据,而叠加数据绑定则可实现每次绑定均以附加的形式(原数据保留)添加到DataGridView控件中,这样就实现了分页加载,但可完整显示已加载的所有数据,这种应用场景在C/S端很常见,B/S端上也有(例如QQ空间动态下面的加载更多按钮)

03
领券