筛选从数据库取好数据的DataTable数据的方法


方法1:

  LinQ是可以直接对DataTable进行查询操作的,那在.Net Framework里,有没有类似的方法呢?答案是肯定的,就是dt.Select()

 1 DataTable dt = new DataTable();    //有数据的
 2 
 3 DataRow[] drArr = dt.Select("C1=’abc’");//查询
 4 还可以这样操作:
 5 DataRow[] drArr = dt.Select("C1 LIKE ’abc%’");//模糊查询 
 6 DataRow[] drArr = dt.Select("’abc’ LIKE C1 + ’%’", "C2 DESC");//另一种模糊查询的方法 
 7 DataRow[] drArr = dt.Select("C1=’abc’", "C2 DESC");//排序
 8 
 9 
10 DataTable dtNew = dt.Clone(); 
11 for (int i = 0; i < drArr.Length; i++) 
12 { 
13     dtNew.ImportRow(drArr[i]);
14 }

=======================

插入数据库一种错误的写法是

DataTable dtNew = dt.Clone(); 
for (int i = 0; i < drArr.Length; i++) 

       dtNew.Rows.Add(drArr[i]);                         //错误原因:该DataRow是属于其他DataTable的
}

===================================

方法2:

  3.5里的DataRow[]有个扩展方法CopyToDataTable(),还可以利用DataView来达到检索的目的。 

 1 DataTable dataSource = new DataTable(); 
 2 DataView dv = dataSource.DefaultView; 
 3 dv.RowFilter = "columnA = 'abc'";
 4 
 5 //1.过滤后直接获取DataTable 
 6 DataTable newTable1 = dv.ToTable();
 7 
 8 //2.设置新DataTable的TableName 
 9 DataTable newTable2 = dv.ToTable("NewTableName");
10 
11 //3.设置新表是否过滤重复项,拥有的列的列名以及出现的顺序 
12 //即可以设置新表的字段。但是字段名肯定是老表dataSource中拥有的。 
13 DataTable newTable3 = 
14 dv.ToTable(true, new string[] { "columnA,columnF,columnC" });
15 
16 //4.综合了2.3两点。 
17 DataTable newTable4 = 
18 dv.ToTable("NewTableName", true, new string[] { "columnA,columnF,columnC" });

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
Bing Webmaster Portal Back