datatable 转list ,list转datatable
方法一:
public
static
IList<T> ConvertToModel(DataTable dt)
{
// 定义集合
IList<T> ts =
new
List<T>();
// 获得此模型的类型
Type type =
typeof
(T);
string
tempName =
""
;
foreach
(DataRow dr
in
dt.Rows)
{
T t =
new
T();
// 获得此模型的公共属性
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach
(PropertyInfo pi
in
propertys)
{
tempName = pi.Name;
// 检查DataTable是否包含此列
if
(dt.Columns.Contains(tempName))
{
// 判断此属性是否有Setter
if
(!pi.CanWrite)
continue
;
object
value = dr[tempName];
if
(value != DBNull.Value)
pi.SetValue(t, value,
null
);
}
}
ts.Add(t);
}
return
ts;
}
}
var query = from t in dt.AsEnumerable().ToList()
group t by new { t1 = t.Field<string>("CustomerID") } into m
select new
{
name = m.Key.t1,
score = m.Sum(n => n.Field<Int32>("aa")),
ss = m.Sum(n => n.Field<Int32>("vv"))
};
list转table:
方法一:
DataTable dt22= ToDataTable(query.Where(p=>1==1));
public static DataTable ToDataTable<T>(IEnumerable<T> collection)
{
var props = typeof(T).GetProperties();
var dt = new DataTable();
dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray());
if (collection.Count() > 0)
{
for (int i = 0; i < collection.Count(); i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in props)
{
object obj = pi.GetValue(collection.ElementAt(i), null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
dt.LoadDataRow(array, true);
}
}
return dt;
}
最新文章
- java多线程--信号量Semaphore的使用
- 30天React Native从零到IOS/Android双平台发布总结
- Opera Browser -- Access Restricted Sites using Free VPN /Free VPN Services List
- Web Compiler
- 模拟jquery
- 【原】从/dev/null重新打开标准输出
- Chapter 17 Replication
- css3盒模型学习--利用box自适应布局
- python nonloacal
- java mongodb连接配置实践——生产环境最优
- myeclipse无法部署项目的解决
- SpringDataJpa学习
- shiroWeb项目-记住我(自动登陆实现)(十五)
- (个人)Zookeeper集群环境部署
- socket 进阶
- Ionic Js七:手势事件
- 〖Linux〗VIM youcompleteme 自动补全 #include 文件名称
- TCP通信的三次握手和四次撒手的详细流程(顿悟)
- MVC4实现AJAX需要引用的2个文件
- Python之路【第五篇】: 函数、闭包、装饰器、迭代器、生成器
热门文章
- 搭建基于IDEA+Selenium+Java+TestNG+Maven+Jenkins+SVN的Web端UI自动化测试环境
- 23)django-缓存
- 解决Navicat连接MySQL总是报错1251的方法
- Oracle11g 启动数据库实例、关闭数据库实例
- Confluence 6 使用 Fail2Ban 来限制登录尝试
- sublime c++
- openmp
- Python学习【第2篇】:Python数据结构
- Vue 导入文件import、路径@和.的区别
- java获取当前时间精确到毫秒