关于Table复制的一些问题
来源:互联网 发布:达内培训 京南京java 编辑:程序博客网 时间:2024/05/16 15:13
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Threading.Tasks;namespace ConsoleApp10{ /* 总结: * Copy属于深复制 * Clone属于浅复制 * Import深复制,但Coding方面比较复杂 * * 资源争夺只发生在:读写同时进行的情况下, * 在多线程的情况下, * 所有线程都进行读操作或所有线程都进行写操作时,不会发生线程争夺问题 */ class Program { static void Main(string[] args) { TableCopy(); TableClone(); TableImport(); Console.ReadKey(); } static void TableCopy() { Console.WriteLine("Table Copy方法开始"); DataTable dt = new DataTable(); dt.Columns.Add("Time", Type.GetType("System.String")); dt.Columns.Add("Weather", Type.GetType("System.String")); dt.Columns.Add("Tempeture", Type.GetType("System.String")); DataRow dr; Random random = new Random(); Parallel.For(0, 100, i => { dr = dt.NewRow(); dr[0] = DateTime.Now.ToString(string.Format("yyyy-MM-dd HH:mm:ss fff")); dr[1] = ((Weather)random.Next(0, 4)).ToString(); dr[2] = random.Next(0, 40); dt.Rows.Add(dr.ItemArray); } ); DataTable dtCpy = dt.Copy(); dt.Clear(); Console.WriteLine("复制表的行数:" + dtCpy.Rows.Count); Console.WriteLine("初始表的行数:" + dt.Rows.Count); Console.WriteLine("Table Copy方法结束"); Console.WriteLine("---复制表应该有100行数据,而初始表不应该有数据!"); } static void TableClone() { Console.WriteLine("Table Clone方法开始"); DataTable dt = new DataTable(); dt.Columns.Add("Time", Type.GetType("System.String")); dt.Columns.Add("Weather", Type.GetType("System.String")); dt.Columns.Add("Tempeture", Type.GetType("System.String")); DataRow dr; Random random = new Random(); Parallel.For(0, 100, i => //for(int i=0;i<100;i++) { dr = dt.NewRow(); dr[0] = DateTime.Now.ToString(string.Format("yyyy-MM-dd HH:mm:ss fff")); dr[1] = ((Weather)random.Next(0, 4)).ToString(); dr[2] = random.Next(0, 40); dt.Rows.Add(dr.ItemArray); } ); DataTable dtCpy = dt.Clone(); //for(int i=0;i<20;i++) Parallel.For(0, 20, i => { dr = dt.NewRow(); dr[0] = DateTime.Now.ToString(string.Format("yyyy-MM-dd HH:mm:ss fff")); dr[1] = ((Weather)random.Next(0, 4)).ToString(); dr[2] = random.Next(0, 40); dtCpy.Rows.Add(dr.ItemArray);//该行已属于另一个表的解决方法 } ); dt.Clear(); Console.WriteLine("克隆表的行数:" + dtCpy.Rows.Count); Console.WriteLine("初始表的行数:" + dt.Rows.Count); Console.WriteLine("Table Clone方法结束"); Console.WriteLine("---克隆表应该有20行数据,而初始表不应该有数据!"); } static void TableImport() { Console.WriteLine("Table Import方法开始"); DataTable dt = new DataTable(); dt.Columns.Add("Time", Type.GetType("System.String")); dt.Columns.Add("Weather", Type.GetType("System.String")); dt.Columns.Add("Tempeture", Type.GetType("System.String")); DataRow dr; Random random = new Random(); //for(int i=0;i<100;i++) Parallel.For(0, 100, i => { dr = dt.NewRow(); dr[0] = DateTime.Now.ToString(string.Format("yyyy-MM-dd HH:mm:ss fff")); dr[1] = ((Weather)random.Next(0, 4)).ToString(); dr[2] = random.Next(0, 40); dt.Rows.Add(dr.ItemArray); } ); DataTable dtCpy = new DataTable(); Parallel.For(0, 50, i => { dtCpy.ImportRow(dt.Rows[i]); } ); dt.Clear(); Console.WriteLine("导出表的行数:" + dtCpy.Rows.Count); Console.WriteLine("初始表的行数:" + dt.Rows.Count); Console.WriteLine("Table Import方法结束"); Console.WriteLine("---导出表应该有50行数据,而初始表不应该有数据!"); } } enum Weather { Sunny, Rainy, Windy, Cloudy }}
阅读全文
0 0
- 关于Table复制的一些问题
- Table的一些问题
- 关于序列号的一些table
- 一些关于table的知识
- 关于table的样式问题
- 关于table的一些非主流操作
- 关于 table 的一些js操作
- 关于复制初始化的问题
- 关于list的复制问题
- mysql replication 复制的一些问题
- myEclipse复制项目时的一些问题
- 关于table里td的宽度问题
- 关于table边框,单元格合并的问题
- 关于Lock-free Hash Table的一些链接资料
- 关于浅度复制和深度复制的问题
- 【经验总结】关于文件复制的一个问题
- 一点关于复制构造函数的问题
- 关于Java复制对象的问题
- cocos2d 遮罩的实现
- vscode 配置 python
- Spark一些常用的数据处理方法-2.MLlib基础统计方法
- 如何搭建基于Java的网站服务器
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 关于Table复制的一些问题
- python爬取视频代码
- 简单的JSP表格中使用到的小东西
- elsaticsearch安装
- 关于安卓HttpURLConnection的一个问题分享讨论
- web测试方法总结
- java获取日期的周数和所属年份
- linux -- glibc uclibc eglibc 异同
- 选择排序之简单选择排序和堆排序