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