/// <summary> /// 根据Data ID List取数据 /// </summary> /// <returns></returns> public DataTable GetSourceByIDList(TableMap tableMap, string fieldNames, List <string> dataIDList, string dataSplitOperator) { DataTable retTable = new DataTable(); DataAccessBroker brokerSource = DataAccessFactory.Instance(this.SourceDataAccessCfg); try { for (int x = 0; x < dataIDList.Count;) { // 每批50个 int count = 50; if (x + count > dataIDList.Count) { count = dataIDList.Count - x; } // 多条数据以or拼起来 List <string> tempDataIDList = new List <string>(); for (int y = 0; y < count; y++) { tempDataIDList.Add(dataIDList[x + y]); } x += count; // 得到where语句 string whereSql = BaseCommand.MakeDataIDWhereSql(fieldNames, tempDataIDList, dataSplitOperator); string sql = "select " + tableMap.SourceTable.FieldNames + " from " + tableMap.SourceTable.TableName + whereSql; DataSet dataSet = brokerSource.FillSQLDataSet(sql); if (dataSet == null || dataSet.Tables.Count == 0) { continue;// 继续下一批50 } DataTable dtTemp = dataSet.Tables[0]; // 第一次时初始化列 if (retTable.Columns.Count == 0) { for (int x1 = 0; x1 < dtTemp.Columns.Count; x1++) { retTable.Columns.Add(dtTemp.Columns[x1].ColumnName, dtTemp.Columns[x1].DataType); } } // 将临时表的数据复制到返回的表中 for (int i = 0; i < dtTemp.Rows.Count; i++) { DataRow row = retTable.NewRow(); DataRow dtRow = dtTemp.Rows[i]; for (int j = 0; j < retTable.Columns.Count; j++) { row[j] = dtRow[j]; } retTable.Rows.Add(row); } } } catch (Exception ex) { throw ex; } finally { brokerSource.Close(); } return(retTable); }