DataTable转化为List
public List<T> ConvertToList<T>(DataTable dt) where T : new()
{
// 定义集合
List<T> ts = new List<T>();
// 获得此模型的类型
Type type = typeof(T);
string tempName = "";
// 获得此模型的公共属性
PropertyInfo[] propertys = type.GetProperties();
T t = new T();
foreach (DataRow dr in dt.Rows)
{
t = new T();
foreach (PropertyInfo pi in propertys)
{
tempName = pi.Name;
// 检查DataTable是否包含此列
if (dt.Columns.Contains(tempName))
{
// 判断此属性是否有Setter
if (!pi.CanWrite) continue;
if (dr[tempName] != DBNull.Value)
pi.SetValue(t, dr[tempName], null);
}
}
ts.Add(t);
}
return ts;
}
调用时:
ConvertToList<TreeNodeInt>(ds.Tables[0])
另附上 生成树形结构的简便方法,此处没有使用递归是他的高明之处,可以借鉴。
public class TreeNodeInt
{
public int id { get; set; }
public int? parentId { get; set; }
public string title { get; set; }
public string key { get; set; }
public string longLabel { get; set; }
public bool isFolder { get; set; }
public bool isLazy { get; set; }
public bool expand { get; set; }
//public bool Select { get; set; }
public bool unselectable { get; set; }
public bool hideCheckbox { get; set; }
public int treeLevel { get; set; }
public object obj { get; set; }
public List<TreeNodeInt> children { get; set; }
public static List<TreeNodeInt> ConvertToTree(List<TreeNodeInt> itemList)
{
itemList = itemList.OrderBy(p => p.title).ToList();
var tree = (from i in itemList
where i.parentId == null || i.parentId == 0
//orderby i.title
select new TreeNodeInt
{
id = i.id,
key = i.key,
//key = i.id.ToString(),
title = i.title,
longLabel = i.longLabel,
isFolder = i.isFolder,
expand = i.expand,
isLazy = i.isLazy,
//Select = i.Select,
unselectable = i.unselectable,
hideCheckbox = i.hideCheckbox,
treeLevel = i.treeLevel,
obj = i.obj
}).ToList();
Queue<TreeNodeInt> queue = new Queue<TreeNodeInt>(tree);
while (queue.Count > 0)
{
var node = queue.Dequeue();
var children = (from i in itemList
where i.parentId == node.id && i.id != node.id
//let idStr = SqlFunctions.StringConvert((double)i.id).Trim()
select new TreeNodeInt
{
id = i.id,
parentId = i.parentId,
key = i.key,
//key = i.id.ToString(),
title = i.title,
longLabel = i.longLabel,
isFolder = i.isFolder,
expand = i.expand,
isLazy = i.isLazy,
//Select = i.Select,
unselectable = i.unselectable,
hideCheckbox = i.hideCheckbox,
treeLevel = i.treeLevel,
obj = i.obj
}).ToList();
if (children.Count > 0)
{
node.children = children;
foreach (var child in children)
{
queue.Enqueue(child);
}
}
}
return tree;
}
}
DataTable转化为List的更多相关文章
- C#将DataTable转化为List<T>
C#将DataTable转化为List<T> 在使用三层架构开发一个网站时,希望把DataTable对象转换为List<T>对象,于是在网上找资料,总结一个比较方便的方法来实现 ...
- LINQ查询返回DataTable类型[轉]與将DataTable序列化为Json格式【轉】
(原文地址:http://xuzhihong1987.blog.163.com/blog/static/26731587201101853740294/) LINQ查询返回DataTable类型 在使 ...
- C#中DataTable转化为List<T>解析
在.net项目中使用到DataTable和List<T>集合的地方较多, 泛型的好处: 它为使用c#语言编写面向对象程序增加了极大的效力和灵活性.不会强行对值类型进行装箱和拆箱,或对引用类 ...
- DataTable转化为Model
/// <summary> /// 将DataTable转成Model /// </summary> /// <param name="dt"> ...
- 将DataTable格式化为json字符串返回
一般用于ajax局部刷新的使用比较多,通过查询得到了DataTable数据,要想将数据放回需要将DataTable转换为json格式,以下为转换的调用函数: string json = "& ...
- .NET DataTable转化为json格式
标准的json用“分隔,不用' public static string DataSetToJson(DataTable dt) { string json = string.Empty ...
- 将DataTable转化为json对象
private string DataTableTojson(DataTable dt) { List> list=new List>(); ...
- 将SqlDataReader 数据集转化为datatbale ,在将datatable 转化为iList
public IList GetModelList(string tablename, string where) { IList list = null; DataTable dataTable = ...
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
随机推荐
- WEB安全实战(一)SQL盲注
前言 好长时间没有写过东西了,不是不想写,仅仅只是是一直静不下心来写点东西.当然,拖了这么长的时间,也总该写点什么的.近期刚刚上手安全方面的东西,作为一个菜鸟,也本着学习的目的,就谈谈近期接触到的安全 ...
- new TimerTask(robot)(转)
import java.awt.Dimension; import java.awt.Robot; import java.awt.Toolkit; import java.io.PrintStrea ...
- 如何更改Java括号中的默认对齐
(1)在使用程序猿非常Java当大括号的排列有感就是它的不那么整齐! 很多人不知道为什么会这样: public class HelloWorld{ pulic static void main(Str ...
- Shuttle ESB(四)——宣布订阅模式实例介绍(1)
前,我的重点是关注的三篇文章Shuttle ESB入境和宏观的概念范例. Shuttle ESB模式:请求/对应模式与Pub/Sub模式. 关于这两种模式的区分,请看以下文章的介绍:Shuttle E ...
- Myeclipse 10/2014 配置插件(svn、maven、properties、velocity)方法
一.构造SVN具体说明 什么是SVN? 管理软件开发过程中的版本控制工具. 以下会以两种方式来介绍怎么安装svn,myeclipse安装SVN插件步骤.以myeclipse 2014为例,第一种是最常 ...
- ubuntu 在下面 hadoop 安装
这两天已经安装hadoop 这些道路是曲折的,记录它 在redhat安装后一直无法开始datanode,因为jdk 问题,换了一个jdk后问题依然,自己猜測是redhat版本号太低的原因,于是仅仅好舍 ...
- 【Android进阶】URL与URI的区别
首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源. 而URL是uniform resource locator,统一资源定位器,它是一种具 ...
- Jenkins(二) 安装、新建Jobs与删除及SVN配置(转)
官网首页(https://jenkins-ci.org/)就提供了windows版本的Jenkins安装包.可以自己下载一个用于学习.安装后自动打开http://localhost:8080,就可以看 ...
- android 反编译,反,注射LOG
反编译smali注射显示LOG该代码.以后使用: .class public Lnet/iaround/connector/DebugClass; .super Ljava/lang/Object; ...
- StackExchange.Redis 使用 - 事件(五)
ConnectionMultiplexer 可以注册如下事件 ConfigurationChanged - 配置更改时 ConfigurationChangedBroadcast - 通过发布订阅更新 ...