有时候从数据库查出来的数据,用datatable存数,但是在网络上传输需要转换为json格式,那么需要将从数据库里查出来的数据转为json;
以下提供了两种方法,第一种是将datable转为list,再转为json,第二种直接使用linq
方法一:将datable转为list
public static List<TResult> ToList<TResult>(DataTable dt) where TResult : class, new()
{
//创建一个属性的列表
List<PropertyInfo> prlist = new List<PropertyInfo>();
//获取TResult的类型实例 反射的入口
Type t = typeof(TResult);
//获得TResult 的Public 属性 并加入到属性列表 找出TResult属性 对应的 DataTable的列名称
Array.ForEach<PropertyInfo>(t.GetProperties(), delegate(PropertyInfo p)
{
if (dt.Columns.IndexOf(p.Name) != -1)
{
prlist.Add(p);
}
});
//创建返回的集合
List<TResult> oblist = new List<TResult>();
IEnumerator enumerator = dt.Row