1. 程式人生 > >在DataTable中執行DataTable.Select("條件"),

在DataTable中執行DataTable.Select("條件"),

for 限定 str tail lec sql語言 tex from 字符

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("條件"),