• 几个类和Table的方法


    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 = 0; 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 > 0)
                {
                    for (int r = 0; r < stores.Count; r++)
                    {
                        var store = stores[r];
                        DataRow dr = dt.NewRow();
    
                        for (int c = 0; 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;
            }
        }
    View Code
    使用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 > 0)
    {
        query.ToList().ForEach(q =>
        {
            Console.WriteLine(q.name + "," + q.sex + "," + q.score);
        });
    }  
    View Code
    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;
            }
    View Code
            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 > 0)
                {
                    for (int r = 0; r < stores.Count; r++)
                    {
                        var store = stores[r];
                        DataRow dr = dt.NewRow();
    
                        for (int c = 0; 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;
            }
    View Code

    出处: http://www.cnblogs.com/windy2008

  • 相关阅读:
    LeetCoded第21题题解--合并两个有序链表
    入门数据结构与算法,看这一个就够了,知识点+LeetCode实战演练
    LeetCoded第242题题解--java--数组
    映射Map、队列Queue、优先级队列PriorityQueue
    链表LinkedList、堆栈Stack、集合Set
    bzoj1588: [HNOI2002]营业额统计
    bzoj3223: Tyvj 1729 文艺平衡树
    bzoj1503: [NOI2004]郁闷的出纳员
    hdu1700 Points on Cycle
    poj1981 Circle and Points
  • 原文地址:https://www.cnblogs.com/windy2008/p/4730628.html
Copyright © 2020-2023  润新知