首先申明一下,写此博文的目的是纪录一下,知识都是现成的,只是整理一下,为了让自己更容易看懂,比在其他地方更容易明白。因为它们太常用了,不忍心每次都去用那么长的时间查看MSDN,希望能在这里用理少的时间来理解并运用其用法。最终目标是减少从接触到能理解并使用的时间。
List<T>类型的查找操作Find
1 Point pt; 2 List<Point> lstPs = new List<Point>(); 3 for (int i = 0; i < 10; i++) 4 { 5 pt = new Point(i, i + 100); 6 lstPs.Add(pt); 7 } 8 Point pp = lstPs.Find( delegate(Point p)//pp是结果Point,是查到的目标 9 { 10 return p.X == 9;//这个是有目标的情况,如果没有这个X==9的这个点呢? 11 }); 12 Point ppNo = lstPs.Find(delegate(Point p) 13 { 14 return p.X == 1000;//如果队列中没有目标点,返回的是Point类型的默认值 15 }); 16 Console.WriteLine("目标点是:"+pp); 17 Console.WriteLine("没有发现目标点时得到的是默认值:" + ppNo); 18 /* 19 返回结果如下: 20 目标点是:{X=9,Y=109} 21 没有发现目标点时得到的是默认值:{X=0,Y=0} 22 */
结论:使用Find方法时要注意return 语句后面是bool类型的表达式,不是想当然的返回一个目标T类型,这里是Point类型。在List中有目标就查到目标,如果没有话就返回 T类型的默认值(default(T)可得到)。
DataTable的使用
1、添加列
2、添加行
3、查找数据select方法的使用
DataTable dtAll = new DataTable(); //下面建立列过程:分别添加名为ID的列,名为name的列,名为score的列,类型分别是long,string,float。 DataColumn dc = new DataColumn("ID", typeof(long)); dtAll.Columns.Add(dc); dc = new DataColumn("name", typeof(string)); dtAll.Columns.Add(dc); dc = new DataColumn("score", typeof(float)); dtAll.Columns.Add(dc); //为表添加行 DataRow dr = dtAll.NewRow(); dr[0] = 2009000;//其实是一个装箱过程,把int装箱为object dr[1] = "john"; dr[2] = 98.5; dtAll.Rows.Add(dr); dr = dtAll.NewRow(); dr[0] = 2009001; dr[1] = "Lucy"; dr[2] = 23.5; dtAll.Rows.Add(dr); DataRow[] drs = dtAll.Select("ID=2009000"); Console.WriteLine(drs[0][2]);//查找到的第一个人的分数score,结果是当然的98.5
几个需要注意的地方。第一、先添加列,而不是先添加行,在添加列后再补充每行;第二、向第n行的第m列添加数据时是一个装箱过程,取出目标数据时需要拆箱操作,一般是Convert.To***方法;第三、查寻时的过滤条件是string,语法是SQL相仿。
一个例子:查找条件不同时的结果。
1 DataTable dt = new DataTable(); 2 for (int i = 0; i < 2; i++)//加两列 3 { 4 DataColumn dc = new DataColumn(); 5 if (i == 0) 6 { 7 dc.ColumnName = "we"; 8 dc.DataType = typeof(int); 9 } 10 dt.Columns.Add(dc); 11 } 12 13 DataRow dr = dt.NewRow(); 14 dr[0] = 99; 15 dr[1] = "ddd"; 16 dt.Rows.Add(dr); 17 18 dr = dt.NewRow(); 19 dr[0] = 80; 20 dr[1] = "808080"; 21 dt.Rows.Add(dr); 22 23 string condition = "we>70 and we<" + 90; 24 DataRow[] drs = dt.Select(condition); 25 string tmp = drs[0][1].ToString();//能输出正常结果,根据条件condition的不同输出不同的结果 26 Console.WriteLine(tmp);
condition作为条件,使用SQL语法 .
DataView的一些用法
1、使用DataTable得到DataView时一个问题
原始有问题的代码如下:
1 DataView dvClass = booksClass.dtClass.DefaultView; 2 DataView dvChild = booksClass.dtClass.DefaultView; 3 dvClass.RowFilter="father=‘11‘"; 4 dvChild.RowFilter = "father=‘22‘";
这样做后,回头再看发现dvClass 和 dvChild的RowFilter是相同的,都是"father=‘22‘";原来是因为dvClass dvChild引用了同一个实例。所以修改如下:
1 DataView dvChild = new DataView(booksClass.dtClass);// booksClass.dtClass.DefaultView; 2 dvClass.RowFilter = "father=‘11‘"; 3 dvChild.RowFilter = "father=‘222‘";
问题得以解决,两个DataView就变得独立了。
C#----List<>,DataTable,DataView的使用,布布扣,bubuko.com
C#----List<>,DataTable,DataView的使用
原文:http://www.cnblogs.com/ddx-deng/p/3773077.html