几个类和Table的方法
2024-08-25 06:34:51
public class TableHelper
{
public static DataTable CreateTableFromClass(Type t)
{
DataTable dt = new DataTable();
PropertyInfo[] pis = t.GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
int colNum = t.GetProperties().Count();
for (int c = ; c < colNum; c++)
{
dt.Columns.Add(pis[c].Name, typeof(string));
}
return dt;
} public static DataTable ConvertListToTable<T>(List<T> stores, DataTable dt) where T : class
{
Type objType = typeof(T);
int colNum = objType.GetProperties().Count();
DataColumnCollection cols = dt.Columns; if (stores.Count > )
{
for (int r = ; r < stores.Count; r++)
{
var store = stores[r];
DataRow dr = dt.NewRow(); for (int c = ; c < colNum; c++)
{
PropertyInfo pi = objType.GetProperty(cols[c].ColumnName, BindingFlags.Public | BindingFlags.Instance);
object value = pi.GetValue(store, null);
dr[c] = value;
}
dt.Rows.Add(dr);
}
}
return dt;
}
}
使用linq to DataTable group by实现
var query = from t in dt.AsEnumerable()
group t by new { t1 = t.Field<string>("name"), t2 = t.Field<string>("sex") } into m
select new
{
name = m.Key.t1,
sex = m.Key.t2,
score = m.Sum(n => n.Field<decimal>("score"))
};
if (query.ToList().Count > )
{
query.ToList().ForEach(q =>
{
Console.WriteLine(q.name + "," + q.sex + "," + q.score);
});
}
public static T PostDataToModel(HttpContext context,T model)
{
Type t = model.GetType();
PropertyInfo[] pis = t.GetProperties();
foreach (PropertyInfo pi in pis)
{
if (!string.IsNullOrEmpty(context.Request.Form[pi.Name]))
{
pi.SetValue(model, Convert.ChangeType(context.Request.Form[pi.Name], pi.PropertyType));
}
}
return model;
}
public DataTable ConvertListToTable<T>(List<T> stores) where T : class
{
Type objType = typeof(T);
DataTable dt = CreateTableFromClass(objType); int colNum = objType.GetProperties().Count();
DataColumnCollection cols = dt.Columns; if (stores.Count > )
{
for (int r = ; r < stores.Count; r++)
{
var store = stores[r];
DataRow dr = dt.NewRow(); for (int c = ; c < colNum; c++)
{
PropertyInfo pi = objType.GetProperty(cols[c].ColumnName, BindingFlags.Public | BindingFlags.Instance);
object value = pi.GetValue(store, null);
dr[c] = value;
}
dt.Rows.Add(dr);
}
}
return dt;
}
最新文章
- jQuery静态方法parseJSON方法使用和源码分析
- cell 内部 设置width 总不对
- java io流之字符流
- 配置org.springframework.scheduling.quartz.CronTriggerBean(转)
- 项目已被os x使用 不能打开-黑苹果之路
- UVa 10815 Andy&#39;s First Dictionary
- jQuery滚动监听插件Waypoints
- Jquer学习
- [LeetCode OJ] Sort Colors
- java中float和double的区别
- PowerShell: 问题,此系统上禁止运行脚本解决方法
- 安装yum源和gcc编译器遇到的问题
- SAP MM A工厂下的PR可以转成B工厂下的PO?
- Java关键字(四)——final
- CF739E Gosha is hunting
- 用pandas读取excel报错
- 2015-09-27 git学习
- CentOS7 安装java 环境 摘抄
- 宝塔面板快速开启https服务
- Spring 源码学习(4) —— 动态AOP使用示例