在DataTable中執行DataTable.Select("條件")返回DataTable;

轉:http://blog.csdn.net/hcf_force/article/details/7779062sql

 

1.在DataTable中執行DataTable.Select("條件")返回DataTable; 

// <summary> 
// 執行DataTable中的查詢返回新的DataTable 
// </summary> 
// dt 是源數據DataTable 
// condition 是查詢條件 

DataTable newdt = new DataTable(); 
newdt = dt.Clone(); // 克隆dt 的結構,包括全部 dt 架構和約束,並沒有數據; 
DataRow[] rows = dt.Select(conditions); // 從dt 中查詢符合條件的記錄; 
foreach (DataRow row in rows)  // 將查詢的結果添加到dt中; 

       newdt.Rows.Add(row.ItemArray); 


有網友說也能夠這樣:(你們能夠試試) 

DataTable newdt = new DataTable(); 
newdt=dt.Clone(); 
DataRow[] dr = dt.Select(condition); 
for(int i=0;i<dr.Length;i++) 

newdt.ImportRow((DataRow)dr[i]); 


2.關於DataTable.Select(); 

Select方法:   
  Select();//所有查出來   
  Select(過濾條件);//根據過濾條件進行過濾,如Select("columnname1   like   '%xx%'");   
  Select(過濾條件,排序字段);//過濾,並排序,如Select("columnname1   like   '%xx%'",columnname2); 

完成一個查詢,返回一個DataTable後,不少時候都想在查詢結果中繼續搜索。這時能夠使用DataTable.Select方法對結果進行再查詢。 
Select方法有4個重載,咱們常常用到的就是DataTable.Select(String) ; 

下面就說說帶一個參數的DataTable.Select(String): 
這個String的參數是查詢的限定式。至關於SQL查詢語言中的WHERE語句(不含WHERE),其語法符合SQL語言語法。 (網友的說法)我以爲就是相似sql的語法而已。 

不過我試了試,不支持BETWEEN AND,舉個成功的例子: 

//FromTime 和ToTime 是兩個DateTime類型的變量;occurTime是dTable裏面的列名; 

DataRow[] datarows = dTable.Select("occurTime >= '" + FromTime + "' and occurTime <= '" + ToTime+"'"); 

DataTable.Select()方法裏面支持簡單的過濾和排序,不支持複雜的條件過濾和排序。裏面的字符串必須是列名和數據,以及>,<,=,<>等關係運算符。舉幾個例子: 

DataRow[]   row   =   Detailtb.Select("WZMC='"+MaterialName+"' and   CZ='"+MaterialTexture+"   and   GG='"+MaterialSpecs+"'");    

DataTable.Select("City Like 'B%'"); 

DataTable.Select("name='" + a +"'"); 

必定要注意單引號的問題;我以前就是把變量用雙引號括起來了,一直出錯,後來在網上查,發現要先有雙引號,再用單引號;即‘「變量」’;架構

相關文章
相關標籤/搜索