`

List转DataTable 反射方式

    博客分类:
  • C#
 
阅读更多

/// <summary>
/// 将集合类转换成DataTable
/// </summary>
/// <param name="list">集合</param>
/// <returns></returns>
public static DataTable ToDataTable(IList list)
{
DataTable result = new DataTable();
if (list.Count > 0)
{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
result.Columns.Add(pi.Name, pi.PropertyType);
}
for (int i = 0; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
/// <summary>
/// 将泛型集合类转换成DataTable
/// </summary>
/// <typeparam name="T">集合项类型</typeparam>
/// <param name="list">集合</param>
/// <returns>数据集(表)</returns>
public static DataTable ToDataTable<T>(IList<T> list)
{
return ConvertX.ToDataTable<T>(list, null);
}
/// <summary>
/// 将泛型集合类转换成DataTable
/// </summary>
/// <typeparam name="T">集合项类型</typeparam>
/// <param name="list">集合</param>
/// <param name="propertyName">需要返回的列的列名</param>
/// <returns>数据集(表)</returns>
public static DataTable ToDataTable<T>(IList<T> list, params string[] propertyName)
{
List<string> propertyNameList = new List<string>();
if (propertyName != null)
propertyNameList.AddRange(propertyName);
DataTable result = new DataTable();
if (list.Count > 0)
{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
if (propertyNameList.Count == 0)
{
result.Columns.Add(pi.Name, pi.PropertyType);
}
else
{
if (propertyNameList.Contains(pi.Name))
result.Columns.Add(pi.Name, pi.PropertyType);
}
}
for (int i = 0; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
{
if (propertyNameList.Count == 0)
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
else
{
if (propertyNameList.Contains(pi.Name))
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
}
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}

分享到:
评论

相关推荐

    DataTable 和List 相互转换

    #### `DataTable`转`List&lt;T&gt;` 在.NET框架中,将`DataTable`转换为`List&lt;T&gt;`通常涉及遍历`DataTable`的每一行,然后创建`T`类型的实例,并将每一列的值映射到相应的属性上。这个过程可以通过反射来实现,但效率较低...

    C# 维数组转换为DataTable 的三个方法

    public static DataTable Convert(string[] ColumnNames, List[]&gt; Arrays) { DataTable dt = new DataTable(); foreach (string columnName in ColumnNames) { dt.Columns.Add(columnName, typeof(string)); }...

    把实体类数组转换为DataTable

    在上述代码中,我们利用了反射API获取`T`类型(这里为`Student`)的所有公共属性,并将其添加为`DataTable`的列。然后,遍历实体数组,将每个实体的属性值填充到新的`DataRow`中,最后将行添加到`DataTable`。 这个...

    C#将DataTable转化为List&lt;T&gt;

    在C#开发中,将DataTable转换为List泛型集合是一个常见的需求,特别是在使用三层架构进行网站开发时,我们可能会从数据访问层获取一个DataTable对象,然后需要将其转换为一个强类型的List集合以便在业务逻辑层或表示...

    .net 将datatable转换为实体类LIST

    将datatable转换为实体类LIST,运用了反射和泛型的技术

    【ASP.NET编程知识】C#将DataTable转化为ListT.docx

    这篇文章主要讲述了如何将DataTable对象转换为List对象,使用反射机制来实现这个功能。下面是详细的知识点: 1. 使用反射机制来获取T对象的所有属性 在将DataTable对象转换为List对象时,需要使用反射机制来获取T...

    DataTable转List

    利用反射和泛型 把Datatable转化为List 1

    C#实现DataTable,List和Json转换的方法

    本文将详细讨论如何使用C#将DataTable、List以及相关的数据结构转换为JSON格式,以便在网络传输或者存储中使用。 首先,让我们看如何将一个DataTable转换为JSON。在.NET框架中,虽然没有内置的直接方法来实现这个...

    c#的datatable转list示例

    在C#编程中,经常需要在不同的数据结构之间进行转换,例如从数据库操作中获取的`DataTable`转换为更方便操作的`List&lt;T&gt;`对象。`DataTable`是.NET框架中用于存储和操作数据的表格型数据结构,而`List&lt;T&gt;`则是一个动态...

    C# DataTable 转换为 实体类对象实例

    在下面的示例代码中,我们将展示如何使用反射机制将 DataTable 转换为实体类对象实例: ```csharp private static List&lt;T&gt; TableToEntity(DataTable dt) where T : class, new() { Type type = typeof(T); List&lt;T&gt;...

    DataSet 转化为List的通用方法

    其中,`DataSet`到`List`的转换是常见的需求之一,尤其是在需要将数据库查询结果以更灵活的方式进行处理时。本文将详细介绍一种通用方法,用于将`DataSet`对象转化为`List`,并实现自动类型转换,提高代码的复用性和...

    C#中将DataTable转化成List&lt;T&gt;的方法解析

    在.NET开发中,DataTable和List是两种常用的集合类型,各有其应用场景。DataTable通常用于存储从数据库查询的结果,而List则更方便于在业务逻辑层进行数据操作。在某些情况下,需要将DataTable转换为List,以便更好...

    将DataTable转换成Listlt;Tgt;实现思路及示例代码

    前几天在工作中,遇到一个问题:需要将查询出来的DataTable数据源,转换成List的泛型集合(已知T类型)。第一反应,我想肯定要用到“泛型”(这不是废话吗?都说了要转换成List泛型集合了),而且还要用到“反射”...

    C#中的DataSet、string、DataTable、对象转换成Json的实现代码

    对于自定义的对象,可以通过以下方式将其转换为JSON: ```csharp public static string ObjectToJson(T obj) { return JsonConvert.SerializeObject(obj, Formatting.Indented); } ``` 这里假设对象T实现了...

    C#将DataTable转化为ListT

    在使用三层架构开发一个网站时,希望把DataTable对象转换为List对象,于是在网上找资料,总结一个比较方便的方法来实现——使用反射。 思路: 初始化一个List对象 获取到T所有的属性,初始化一个T对象 遍历所有属性...

    c#中利用委托反射将DataTable转换为实体集的代码

    类泛型的约束: 代码如下: public static class ToModel&lt;T&gt; where T : class, new() 定义委托: 代码如下:public delegate void SetString(string value); 创建委托方法: 代码如下: private static SetString ...

    C#中DataTable 转实体实例详解

    以下是一个使用反射将DataTable转换为List的扩展方法: ```csharp public static List&lt;T&gt; ToList(this DataTable dt) where T : class, new() { List&lt;T&gt; collection = new List(); PropertyInfo[] pInfos = ...

    Database_List.zip_databaseList

    在标题为"Database_List.zip_databaseList"的压缩包中,我们关注的是一个通用方法,它能够实现DataTable与List对象之间的相互转换。这种转换在处理大量数据时非常有用,尤其是在进行数据操作、分析或者数据展示时。...

    将DataTable转换成List&amp;lt;T&amp;gt;实现思路及示例代码

    总结起来,通过创建一个泛型辅助类并利用反射和泛型特性,我们可以方便地将DataTable转换为List,从而提高代码的可维护性和类型安全性。这个转换方法适用于各种.NET应用程序,包括但不限于ASP.NET、Windows Forms或...

    NPOI 导入导出Excel (List泛型版)

    NPOL网上有返回DataTable,我自己编写了个泛型版的。

Global site tag (gtag.js) - Google Analytics