2012-02-17 27 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