在DataTable中執行DataTable.Select("條件"),
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 +"‘");
一定要註意單引號的問題;我之前就是把變量用雙引號括起來了,一直出錯,後來在網上查,發現要先有雙引號,再用單引號;即‘“變量”’;
在DataTable中執行DataTable.Select("條件"),