有什麼辦法可以將DataSet用作IN'值'?在數據集中選擇值
例如,我有一個查詢加載一個DataSet的選項,用戶可以在他們的工作時進行選擇。問題是,加載DataSet的查詢非常長且艱苦(在其他選擇和其他表連接中選擇和連接表等)等等,所以我希望能夠一次性填充DataSet ,並在運行其他查詢時引用DataSet。
現在,我已經通過調用每一行,從行中獲取值並將其附加到查詢來實現它。
//GetAvailableOptions is just the long and complicated query
//Code simplified just for example sake
DataSet ds = GetAvailableOptions();
string str_qry = "select from TestFile where (";
foreach(DataRow dr in ds.Tables[0].Rows)
{
string str_test = dr[0].ToString();
str_qry += dr[0].ToString() + " or ";
}
所以結果查詢是這樣的:
select from TestFile where (TestField = 'A' or TestField = 'B' or ... TestField = 'Z')
但如果我不能使它更快通過執行以下操作我想知道:
DataSet ds = GetAvailableOptions();
string str_qry = "select from TestFile where TestField in " + ds.Tables[0].Columns[0];
但我可以」讓它工作。這可能嗎?我的邏輯聲音是?我試圖從DataSet引用的Column的名稱與我試圖加載的字段(在本例中爲TestField)相同。
另外,我在想更主觀的問題是,如果這樣做會工作多快(如果是的話?)會是多少?或者甚至連接和多個查詢,從那裏拉取而不是循環和追加會更快嗎?或者,如果有另一種我沒有想到的方式?有人能分享他們的經驗嗎?
我投這個票,因爲這確實提供了一個更好的方式來做到這一點。然而,僅僅爲了教育的目的,你知道我最初提出的做法是否可以做到嗎? – Gobbledigook