DataTable ReturnDt = new DataTable("Tab_Result");
ReturnDt.Columns.AddRange(new DataColumn[]
{
new DataColumn("序号", typeof(int)),
new DataColumn("分公司名称", typeof(string)),
new DataColumn("销售件数", typeof(int)),
new DataColumn("销售均价", typeof(decimal)),
new DataColumn("销售总额", typeof(decimal)),
new DataColumn("售前件数", typeof(int)),
new DataColumn("售后件数", typeof(int)),
new DataColumn("签约店数", typeof(int)),
new DataColumn("有效店数", typeof(int)),
new DataColumn("销售总件数", typeof(int)),
new DataColumn("总店数", typeof(int)), });
int Count = ;
for (int i = ; i <= Count; i++)
{
System.Data.DataRow myRow = ReturnDt.NewRow();
myRow["序号"] = i;
myRow["分公司名称"] = "北京" + i;
myRow["销售件数"] = + i;
myRow["销售均价"] = Convert.ToDecimal(i.ToString()).ToString("0.00");
myRow["销售总额"] = Convert.ToDecimal(i.ToString()).ToString("0.00");
myRow["售前件数"] = i + ;
myRow["售后件数"] = i + ;
myRow["签约店数"] = i + ;
myRow["有效店数"] = i + ;
myRow["销售总件数"] = int.Parse(myRow["售前件数"].ToString()) + int.Parse(myRow["售后件数"].ToString());
ReturnDt.Rows.Add(myRow);
//需放在后面,不然赋值错误,可做为汇总列,没初始值
myRow["总店数"] = ReturnDt.Compute("Sum(签约店数)+Sum(有效店数)", "序号=" + i.ToString()); if (i == Count)
{
//添加汇总行
System.Data.DataRow myRow1 = ReturnDt.NewRow();
myRow1["序号"] = ;
myRow1["分公司名称"] = "汇总行";
myRow1["销售件数"] = ReturnDt.Compute("SUM(销售件数)", "");
myRow1["销售均价"] = ReturnDt.Compute("SUM(销售均价)", "");
myRow1["销售总额"] = ReturnDt.Compute("SUM(销售总额)", "");
myRow1["售前件数"] = ReturnDt.Compute("SUM(售前件数)", "");
myRow1["售后件数"] = ReturnDt.Compute("SUM(售后件数)", "");
myRow1["签约店数"] = ReturnDt.Compute("SUM(签约店数)", "");
myRow1["有效店数"] = ReturnDt.Compute("SUM(有效店数)", "");
myRow1["销售总件数"] = ReturnDt.Compute("SUM(销售总件数)", "");
myRow1["总店数"] = ReturnDt.Compute("SUM(总店数)", "");
//ReturnDt.Rows.Add(myRow1);//插入到最后一行
ReturnDt.Rows.InsertAt(myRow1, );//插入到第一行 } } //删除列
// ReturnDt.Columns.Remove("销售总件数"); //调整列顺序 ,列排序从0开始
ReturnDt.Columns["分公司名称"].SetOrdinal(); //修改列标题名称
ReturnDt.Columns["分公司名称"].ColumnName = "名称"; // ReturnDt.Rows.Remove(row);//根据row行信息删除
//ReturnDt.Rows.RemoveAt(1);//根据index索引删除 //查询序号大于等于5,并且按销售件数排序
EnumerableRowCollection<DataRow> query =
from order in ReturnDt.AsEnumerable()
where order.Field<int>("序号") <=
orderby order.Field<int>("销售总件数")
select order; //复制表
DataTable boundTable = query.CopyToDataTable<DataRow>(); DataView view1 = query.AsDataView();
//view1.Sort = "序号 DESC";//降序
view1.Sort = "序号 ASC";//升序
view1.RowFilter = "序号 < 15";//筛选 //泛型转DataTable
List<People> list = new List<People>()
{
new People{ID=,Name="A",Sex="男",Age=,Tel="0871-8989898",Addres="四川南通市区1",Work="工程师",Income=8000.09,Birthday=System.DateTime.Now},
new People{ID=,Name="B",Sex="男",Age=,Tel="0871-8989898",Addres="四川南通市区2",Work="教师",Income=8010.09,Birthday=System.DateTime.Now},
new People{ID=,Name="S",Sex="男",Age=,Tel="0871-8989898",Addres="四川南通市区3",Work="博士",Income=8200.09,Birthday=System.DateTime.Now},
new People{ID=,Name="AD",Sex="男",Age=,Tel="0871-8989898",Addres="四川南通市区4",Work="工程师",Income=840.09,Birthday=System.DateTime.Now},
new People{ID=,Name="AA",Sex="男",Age=,Tel="0871-8989898",Addres="四川南通市区5",Work="工程师",Income=8500.09,Birthday=System.DateTime.Now},
new People{ID=,Name="AR",Sex="男",Age=,Tel="0871-8989898",Addres="四川南通市区6",Work="建筑师",Income=850.09,Birthday=System.DateTime.Now},
new People{ID=,Name="AW",Sex="男",Age=,Tel="0871-8989898",Addres="四川南通市区7",Work="工程师",Income=8000.09,Birthday=System.DateTime.Now},
new People{ID=,Name="AR",Sex="男",Age=,Tel="0871-8989898",Addres="四川南通市区8",Work="培训师",Income=860.069,Birthday=System.DateTime.Now},
new People{ID=,Name="AQ",Sex="男",Age=,Tel="0871-8989898",Addres="四川南通市区9",Work="工程师",Income=8900.09,Birthday=System.DateTime.Now}, }; System.Data.DataTable dt = ConvertToDataTable(list);
System.String str = ConvertToJson(dt); System.Data.DataTable dt1 = JsonToDataTable(str);
} public static DataTable JsonToDataTable(string strJson)
{
//取出表名
//var rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase);
var rg = new Regex(@"([^:])+(?=:\{)", RegexOptions.IgnoreCase);
string strName = rg.Match(strJson).Value;
DataTable tb = null;
//去除表名
//strJson = strJson.Substring(strJson.IndexOf("{") + 1);
//strJson = strJson.Substring(0, strJson.IndexOf("}")); //获取数据
//rg = new Regex(@"(?<={)[^}]+(?=})");
rg = new Regex(@"(?<={)[^}]+(?=})"); System.Text.RegularExpressions.MatchCollection mc = rg.Matches(strJson);
for (int i = ; i < mc.Count; i++)
{
string strRow = mc[i].Value;
string[] strRows = strRow.Split(','); //创建表
if (tb == null)
{
tb = new DataTable();
tb.TableName = strName;
foreach (string str in strRows)
{
var dc = new DataColumn();
string[] strCell = str.Split(':');
dc.ColumnName = strCell[];
tb.Columns.Add(dc);
}
tb.AcceptChanges();
} //增加内容
DataRow dr = tb.NewRow();
for (int r = ; r < strRows.Length; r++)
{
//dr[r] = strRows[r].Split(':')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("\"", "");
dr[r] = strRows[r];
}
tb.Rows.Add(dr);
tb.AcceptChanges();
} return tb;
}
//datatable转json
public static string ConvertToJson(DataTable dt)
{ StringBuilder jsonBuilder = new StringBuilder();
int count = dt.Rows.Count;
if (count != )
{ jsonBuilder.Append("[");
for (int i = ; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = ; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append(":\'");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\',");
}
jsonBuilder.Remove(jsonBuilder.Length - , );
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - , );
jsonBuilder.Append("]");
return jsonBuilder.ToString();
}
else
{
return null;
} } //泛型转Datatble
public static DataTable ConvertToDataTable<T>(IList<T> list)
{
if (list == null || list.Count <= )
{
return null;
} DataTable dataTable = new DataTable(typeof(T).Name);
DataColumn column;
DataRow row; System.Reflection.PropertyInfo[] PropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); foreach (T t in list)
{
if (t == null)
{
continue;
} row = dataTable.NewRow(); for (int i = , j = PropertyInfo.Length; i < j; i++)
{
System.Reflection.PropertyInfo pi = PropertyInfo[i]; string name = pi.Name; if (dataTable.Columns[name] == null)
{
column = new DataColumn(name, pi.PropertyType);
dataTable.Columns.Add(column);
} row[name] = pi.GetValue(t, null);
} dataTable.Rows.Add(row);
} return dataTable;
}
public class People
{ public string Name { get; set; }
public int Age { get; set; }
public string Tel { get; set; }
public string Addres { get; set; }
public int ID { get; set; }
public string Sex { get; set; }
public double Income { get; set; }
public string Work { get; set; }
public System.DateTime Birthday { get; set; } }

DataTable一些操作的更多相关文章

  1. DataTable相关操作,筛选,取前N条数据,获取指定列数据

    DataTable相关操作,筛选,取前N条数据,获取指定列数据2013-03-12 14:50 by Miracle520, 2667 阅读, 0 评论, 收藏, 编辑 1 #region DataT ...

  2. ASP.NET DataTable的操作大全

    DataTable表示一个与内存有关的数据表,可以使用工具栏里面的控件拖放来创建和使用,也可以在编写程序过程中根据需要独立创建和使用,最常见的情况是作为DataSet的成员使用,在这种情况下就需要用在 ...

  3. DataTable多线程操作报错情况

    最近在写一个http接口时用了DataTable这个强大的利器,接口用浏览器跑起来没任何问题.当时也没考虑并发问题,后来用一个压力测试工具做大并发测试,1000+/s次速度测试.发现程序报错了.程序报 ...

  4. Excel和datatable相互操作

    /// <summary> /// Excel文档 /// </summary> /// <param name="table"></pa ...

  5. DataTable常用操作

    添加列和行的三种方法(转载) 原文地址:http://www.cnblogs.com/jRoger/articles/1887581.html DataTable tblDatas =new Data ...

  6. datatable列操作

    DataTable myDt =dt;  //删除列  myDt.Columns.Remove("minArea");  myDt.Columns.Remove("max ...

  7. [C#]DataTable常用操作总结

    ].RowState == DataRowState.Unchanged)        {            //Your logic        }        //⑩Convert to ...

  8. jquery datatable 实例操作

    var dataTables = $(".table").dataTable({ data: d,//为ajax的值,没有直接用插件自带的请求数据方式,个人觉得data的方式好控制 ...

  9. DataTable 常用操作

    //定义表结构 DataTable dt = new DataTable(); dt.Columns.Add("FactoryId"); 或dt.Columns.Add(new D ...

随机推荐

  1. datasorttable表格

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  2. Mina学习之IoFilter

    IoFilter 是MINA中的一个核心结构,扮演了非常重要的角色.IoFilter在IoService和IoHandler过滤了所有的I/O 事件和请求.如果你有做个web项目的经验,则很类似于we ...

  3. iOS实用技能扩展-集成支付宝

    前奏 现在随着移动开发的快速发展,移动支付变得越来越流行与必不可少.最近做了一个关于支付宝支付功能的应用,在使用支付宝的过程中,遇到一些不必要的弯路,因此,写了这篇文章总结一下关于iOS中如何开发使用 ...

  4. Excel中如何查找并列出所有链接(外部数据链接)?

    在 Excel 中,有时会需要创建外部链接来引用其他工作簿的单元格内容,但是如果想要找出所有链接并且还要将这些外部数据链接列在一个工作簿当中是有点难度的.下面我会介绍一些快捷方法,不仅能够快速帮你找出 ...

  5. CreateEvent的使用方法

     CreateEvent的使用方法收藏 新一篇: PreCreateWindow的作用和用法 | 旧一篇: VC中_T()的作用 function StorePage(){d=document;t=d ...

  6. extern用法总结!

    extern 在源文件A里定义的函数,在其他源文件中是看不见的(即不能訪问).为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明: extern   函数原型: 这样,在源文件B里也能够调 ...

  7. tty、pty、pts等(小记)

    http://blog.csdn.net/dbzhang800/article/details/6939742 1> tty(终端设备的统称):tty一词源于Teletypes,或者telety ...

  8. hadoop错误org.apache.hadoop.mapred.TaskAttemptListenerImpl Progress of TaskAttempt

    错误: org.apache.hadoop.mapred.TaskAttemptListenerImpl: Progress of TaskAttempt 原因: 错误很明显,磁盘空间不足,但郁闷的是 ...

  9. linux shell pushd popd dirs命令

    1.dirs 1)功能显示当前目录栈中的所有记录(不带参数的dirs命令显示当前目录栈中的记录) 2)语法(1)格式:dirs  [-clpv]  [+n]  [-n](2)选项-c    删除目录栈 ...

  10. oracle多表查询

    多表查询首先要避免笛卡尔集,要避免笛卡尔集,那么查询条件不得少于表的个数-1. 1.显示雇员名,雇员工资以及雇员所在的部门: 2.显示部门号为10的部门名.员工名和工资: 3.显示各个雇员的姓名,工资 ...