DataTable 行轉列

要轉的DataTable結構如下圖:


        private DataTable ConvertDataTable(DataTable dtSrc)
        {
            try
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("姓名");
                var columns = (from p in dtSrc.Rows.Cast<DataRow>() select p[1].ToString()).Distinct();
                foreach (var item in columns) dt.Columns.Add(item);
                var data = from k in source.Rows.Cast<DataRow>()
                           group k by k[0] into m
                           select new { Key = m.Key.ToString(), Items = m };
                data.ToList().ForEach(n =>
                {
                    string[] array = new string[dt.Columns.Count];
                    array[0] = n.Key;
                    for (int i = 1; i < dt.Columns.Count; i++)
                        array[i] = (from p in n.Items
                                    where p[1].ToString() == dt.Columns[i].ToString()
                                    select p[2].ToString())
                                   .SingleOrDefault();
                    dt.Rows.Add(array);
                });
                return dt;
            }
            catch
            {
                return null;
            }
        }

轉後結果如下圖:


每天進步一點點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章