2012-02-17 25 views
0

獲取與此SQL查詢等效的DataTable的行的查詢語法是什麼?DataTable Select參數化類似於SQL Select其中x = @參數

 SQLiteConnection cnn = new SQLiteConnection(System.String.Format("Data Source={0}", fpath)); 

     cnn.Open(); 
     DataTable primaryfeed = new DataTable(); 

     using (SQLiteTransaction dbTrans = cnn.BeginTransaction()) 
     { 
      using (SQLiteCommand cmd = cnn.CreateCommand()) 
      { 

       string command = System.String.Format("SELECT col1, col2, col3, col4 FROM AccountDataBase WHERE ID = @ID"); 

       SQLiteParameter param1 = new SQLiteParameter(); 

       param1.ParameterName = "@ID"; 

       cmd.Parameters.Add(param1); 

       cmd.CommandText = command; 

       for (int i = 0; i < selectedIDs.Length; i++) 
       { 

        param1.Value = selectedIDs[i]; 

        SQLiteDataReader reader = cmd.ExecuteReader(); 
        primaryfeed.Load(reader); 
        reader.Close(); 
       } 
      } 
      dbTrans.Commit(); 
     } 
     cnn.Close(); 

所以我有一個DataTable和一串ID的ID。從DataTable中獲取具有ID值的所有行的命令是最快的方法是什麼?

它是否比等效的SQL查詢慢得多?

回答

0

假設myTable有一個名爲ID列,那麼你就這樣做:

var foundRows = myTable.Select("ID IN (1, 12, 14, 10)"); 
+0

THX的答案 它有一個ID列,但 問題的最重要的部分是,這個ID陣列可以從一系列幾千到幾十萬。這就是爲什麼我不能簡單地把這樣的字符串放在一起。 或者你認爲它會正常工作,如果我在該Select支架內追加一個4800 ID字符串? – ZAX 2012-02-17 17:03:13