/// <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<T>` 在.NET框架中,将`DataTable`转换为`List<T>`通常涉及遍历`DataTable`的每一行,然后创建`T`类型的实例,并将每一列的值映射到相应的属性上。这个过程可以通过反射来实现,但效率较低...
public static DataTable Convert(string[] ColumnNames, List[]> Arrays) { DataTable dt = new DataTable(); foreach (string columnName in ColumnNames) { dt.Columns.Add(columnName, typeof(string)); }...
在上述代码中,我们利用了反射API获取`T`类型(这里为`Student`)的所有公共属性,并将其添加为`DataTable`的列。然后,遍历实体数组,将每个实体的属性值填充到新的`DataRow`中,最后将行添加到`DataTable`。 这个...
在C#开发中,将DataTable转换为List泛型集合是一个常见的需求,特别是在使用三层架构进行网站开发时,我们可能会从数据访问层获取一个DataTable对象,然后需要将其转换为一个强类型的List集合以便在业务逻辑层或表示...
将datatable转换为实体类LIST,运用了反射和泛型的技术
这篇文章主要讲述了如何将DataTable对象转换为List对象,使用反射机制来实现这个功能。下面是详细的知识点: 1. 使用反射机制来获取T对象的所有属性 在将DataTable对象转换为List对象时,需要使用反射机制来获取T...
利用反射和泛型 把Datatable转化为List 1
本文将详细讨论如何使用C#将DataTable、List以及相关的数据结构转换为JSON格式,以便在网络传输或者存储中使用。 首先,让我们看如何将一个DataTable转换为JSON。在.NET框架中,虽然没有内置的直接方法来实现这个...
在C#编程中,经常需要在不同的数据结构之间进行转换,例如从数据库操作中获取的`DataTable`转换为更方便操作的`List<T>`对象。`DataTable`是.NET框架中用于存储和操作数据的表格型数据结构,而`List<T>`则是一个动态...
在下面的示例代码中,我们将展示如何使用反射机制将 DataTable 转换为实体类对象实例: ```csharp private static List<T> TableToEntity(DataTable dt) where T : class, new() { Type type = typeof(T); List<T>...
其中,`DataSet`到`List`的转换是常见的需求之一,尤其是在需要将数据库查询结果以更灵活的方式进行处理时。本文将详细介绍一种通用方法,用于将`DataSet`对象转化为`List`,并实现自动类型转换,提高代码的复用性和...
在.NET开发中,DataTable和List是两种常用的集合类型,各有其应用场景。DataTable通常用于存储从数据库查询的结果,而List则更方便于在业务逻辑层进行数据操作。在某些情况下,需要将DataTable转换为List,以便更好...
前几天在工作中,遇到一个问题:需要将查询出来的DataTable数据源,转换成List的泛型集合(已知T类型)。第一反应,我想肯定要用到“泛型”(这不是废话吗?都说了要转换成List泛型集合了),而且还要用到“反射”...
对于自定义的对象,可以通过以下方式将其转换为JSON: ```csharp public static string ObjectToJson(T obj) { return JsonConvert.SerializeObject(obj, Formatting.Indented); } ``` 这里假设对象T实现了...
在使用三层架构开发一个网站时,希望把DataTable对象转换为List对象,于是在网上找资料,总结一个比较方便的方法来实现——使用反射。 思路: 初始化一个List对象 获取到T所有的属性,初始化一个T对象 遍历所有属性...
类泛型的约束: 代码如下: public static class ToModel<T> where T : class, new() 定义委托: 代码如下:public delegate void SetString(string value); 创建委托方法: 代码如下: private static SetString ...
以下是一个使用反射将DataTable转换为List的扩展方法: ```csharp public static List<T> ToList(this DataTable dt) where T : class, new() { List<T> collection = new List(); PropertyInfo[] pInfos = ...
在标题为"Database_List.zip_databaseList"的压缩包中,我们关注的是一个通用方法,它能够实现DataTable与List对象之间的相互转换。这种转换在处理大量数据时非常有用,尤其是在进行数据操作、分析或者数据展示时。...
总结起来,通过创建一个泛型辅助类并利用反射和泛型特性,我们可以方便地将DataTable转换为List,从而提高代码的可维护性和类型安全性。这个转换方法适用于各种.NET应用程序,包括但不限于ASP.NET、Windows Forms或...
NPOL网上有返回DataTable,我自己编写了个泛型版的。