`
yyw84
  • 浏览: 78713 次
社区版块
存档分类
最新评论

IList<T> 转换成 DataSet

阅读更多
 
     通过 NHibernate 查询返回的表数据通常都是IList<T>,但在实际使用中有些数据控件在数据绑定上对IList的支持并不是很好,所以有时候将IList转换成DataSet还是有必要的。在Vinson的Blogs中提到了怎么将IList转换成DataSet,可惜源码是VB.NET的。
      下面是我根据IList转换成DataSet中的VB.NET源码转换成C#,由于现在做项目是用 VS 2005 ,所以也对其改进,让它支持C#2.0 中的泛型。

代码如下:

<!---->using System;
using System.Data;

public class NHibernateHelper
{
    
/**//// <summary>
    
/// Ilist<T> 转换成 DataSet
    
/// </summary>
    
/// <param name="list"></param>
    
/// <returns></returns>
    public static DataSet ConvertToDataSet<T>(IList<T> list)
    
{
        
if (list == null || list.Count <= 0)
        
{
            
return null;
        }


        DataSet ds 
= new DataSet();
        DataTable dt 
= new DataTable(typeof(T).Name);
        DataColumn column;
        DataRow row;

        System.Reflection.PropertyInfo[] myPropertyInfo 
= typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);

        
foreach (T t in list)
        
{
            
if (t == null)
            
{
                
continue;
            }


            row 
= dt.NewRow();

            
for (int i = 0, j = myPropertyInfo.Length; i < j; i++)
            
{
                System.Reflection.PropertyInfo pi 
= myPropertyInfo[i];

                
string name = pi.Name;

                
if (dt.Columns[name] == null)
                
{
                    column 
= new DataColumn(name, pi.PropertyType);
                    dt.Columns.Add(column);
                }


                row[name] 
= pi.GetValue(t, null);
            }


            dt.Rows.Add(row);
        }


        ds.Tables.Add(dt);

        
return ds;
    }


}

分享到:
评论

相关推荐

    C#中IList&lt;T&gt;与List&lt;T&gt;的区别深入解析

    在C#编程中,`IList&lt;T&gt;`和`List&lt;T&gt;`是两个常见的泛型集合类,它们在使用上有显著的差异。本文将深入探讨这两个类的区别,并解释在何时选择使用它们。 首先,`IList&lt;T&gt;`是一个接口,它是`ICollection&lt;T&gt;`的子接口,...

    浅谈C#中List&lt;T&gt;对象的深度拷贝问题

    public static IList&lt;T&gt; Clone&lt;T&gt;(this IList&lt;T&gt; listToClone) where T : ICloneable { return listToClone.Select(item =&gt; (T)item.Clone()).ToList(); } } ``` 2. **利用序列化和反序列化**: 使用System....

    Json与实体相互转换,支持IList泛型

    Json转换为实体;Json转换为IList&lt;T&gt;;实体转换为Json;IList&lt;T&gt;转换为Json;

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

    1. 将DataTable或Ilist&lt;&gt;转换成JSON格式 using System; using System.Data; using System.Text; using System.Collections.Generic; using System.Reflection; /// /// 将DataTable或Ilist&lt;&gt;转换成JSON格式 ...

    将IList转换成DataTable和DateSet的类

    在处理数据时,我们有时需要将IList&lt;T&gt;类型的集合转换为DataTable或DataSet,因为这两者在数据库操作和数据绑定方面具有更强大的功能。下面将详细解释如何实现这种转换,以及在什么情况下需要进行这种转换。 首先,...

    C# List&lt;T&gt;的用法小结

    C#中的`List&lt;T&gt;`是.NET框架中常用的一个泛型集合类,它实现了`IList&lt;T&gt;`、`ICollection&lt;T&gt;`、`IEnumerable&lt;T&gt;`等多个接口,提供了丰富的功能来处理动态数组。`List&lt;T&gt;`的主要优点在于它的灵活性和效率,特别是在处理...

    IList转换为DataTable

    ### IList&lt;T&gt;转换为DataTable 的实现方法 在.NET框架中,`IList&lt;T&gt;`与`DataTable`是两种非常常见的数据结构。前者是一种泛型接口,主要用于处理类型安全的列表;而后者则是.NET Framework中用于存储数据的一种表格...

    C# 解析json格式数据为IList

    总之,C#通过Json.NET库提供了强大的JSON解析功能,可以方便地将JSON数据转换为IList&lt;T&gt;类型,无论T是简单的基础类型还是复杂的自定义类。理解这个过程对于处理现代Web应用中的数据交换至关重要。

    List转换成DataSet实现代码

    代码如下: /// &lt;summary&gt; /// List转换成DataSet /// &lt;/summary&gt; /// ”T”&gt;类型&lt;/typeparam&gt; /// ”list”&gt;将要转换的List&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public DataSet ConvertToDataSet&lt;T&gt;(IList&lt;T&gt; list) { ...

    C#中Ilist与list的区别小结

    Ilist &lt;&gt; 本身只是一个泛型接口, 既然是接口当然不能实例化,只能用如下方法 IList &lt;Class1&gt; IList11 =new List (); 但是为什么要这么用呢,为什么不直接用List: List &lt;Class1&gt; List11 =new List (); 第一种用法...

    fressian-clr:fressian的CLR端口

    平台说明映射类型下面是原生 fressian 类型到 clr 类型的映射: 整数 -&gt; 长布尔 -&gt; 布尔字节 -&gt; 字节 [] 双 -&gt; 双浮动 -&gt; 浮动字符串 -&gt; 字符串列表 -&gt; System.Collections.Generic.IList&lt;object&gt; 设置 -&gt; ...

    IList转成DataTable和DateSet的类

    在上述代码中,`ConvertIListToDataTable&lt;T&gt;`方法用于将IList&lt;T&gt;转换为DataTable,而`ConvertIListToDateSet&lt;T&gt;`方法则进一步将单个DataTable封装到一个DataSet中。这里的T代表了IList中的元素类型,这使得转换方法...

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

    本文将深入探讨如何使用C#将DataSet、string、DataTable以及对象转换成JSON字符串。 首先,让我们理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和...

    将ILIST集合转换成String数组的方法

    ### 将ILIST集合转换成String数组的方法 在软件开发过程中,经常需要处理不同类型的数据结构之间的转换,尤其是在进行数据交互时。本篇文章将详细介绍如何将一个`ILIST`集合转换为`String`数组,这对于理解.NET环境...

    Goodies:NET中缺少的有用内容,例如鸭子键入,CSP通道,缓存,金钱,键入的ID。

    &gt; ,该实现同时实现了IList&lt;&gt;和ISet&lt;&gt; 。 另外HashLookup&lt;,&gt;还提供了HashLookup&lt;,&gt;和CircularQueue&lt;&gt;类。 命名空间包含运行时鸭子输入。 命名空间包含使用属性名称在运行时创建相等比较器的过程。 ...

    IList排序(C#)

    在.NET框架中,`IList&lt;T&gt;`接口是一个非常重要的接口,它是`List&lt;T&gt;`、`ArrayList`等集合类的基础。`IList&lt;T&gt;`接口继承自`ICollection&lt;T&gt;`和`IEnumerable&lt;T&gt;`,并提供了对列表元素的索引访问,以及添加、删除、查找和...

    IEnumerable<T>、ICollection<T>、IList<T>、ObservableCollectin<T>和Collection<T>的关系

    在.NET框架中,`IEnumerable&lt;T&gt;`、`ICollection&lt;T&gt;`、`IList&lt;T&gt;`、`ObservableCollection&lt;T&gt;`和`Collection&lt;T&gt;`是几个重要的泛型接口和类,它们在处理集合数据时扮演着不同的角色,提供了不同程度的功能和性能优化。...

    List泛型和DataSet

    它实现了`IList&lt;T&gt;`,`ICollection&lt;T&gt;` 和 `IEnumerable&lt;T&gt;` 接口,提供了丰富的操作方法,如添加元素(Add)、删除元素(Remove)、查找元素(Find)等。使用`List&lt;T&gt;`的好处在于,由于类型检查是在编译时完成的,...

    IEnumerable<T>、IEnumerable、ICollection<T>、IList<T>、ObservableCollectin<T>和Collection<T>得关系。

    本文将详细解释`IEnumerable&lt;T&gt;`、`IEnumerable`、`ICollection&lt;T&gt;`、`IList&lt;T&gt;`、`ObservableCollectin&lt;T&gt;`以及`Collection&lt;T&gt;`之间的关系。 首先,`IEnumerable&lt;T&gt;`接口是基础,它定义了一个可以被枚举(即遍历)...

Global site tag (gtag.js) - Google Analytics