private List <CEntityTSWater> CopyDataToList(int key, int startRow) { List <CEntityTSWater> result = new List <CEntityTSWater>(); // 取最小值 ,保证不越界 int endRow = Math.Min(m_mapDataTable[key].Rows.Count, startRow + CDBParams.GetInstance().UIPageRowCount); DataTable table = m_mapDataTable[key]; for (; startRow < endRow; ++startRow) { CEntityTSWater water = new CEntityTSWater(); // water.WaterID = long.Parse(table.Rows[startRow][CN_WaterID].ToString()); water.StationID = table.Rows[startRow][CN_StationId].ToString(); water.TimeCollect = DateTime.Parse(table.Rows[startRow][CN_DataTime].ToString()); //水位 if (!table.Rows[startRow][CN_WaterStage].ToString().Equals("")) { water.WaterStage = Decimal.Parse(table.Rows[startRow][CN_WaterStage].ToString()); } else { //11.12 water.WaterStage = -9999; } //流量 water.TimeRecieved = DateTime.Parse(table.Rows[startRow][CN_RecvDataTime].ToString()); water.ChannelType = CEnumHelper.DBStrToChannelType(table.Rows[startRow][CN_TransType].ToString()); water.MessageType = CEnumHelper.DBStrToMessageType(table.Rows[startRow][CN_MsgType].ToString()); result.Add(water); } return(result); }
public void AddNewRow(CEntityTSWater water) { // 记录超过1000条,或者时间超过1分钟,就将当前的数据写入数据库 m_mutexDataTable.WaitOne(); //等待互斥量 DataRow row = m_tableDataAdded.NewRow(); row[CN_StationId] = water.StationID; row[CN_DataTime] = water.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat); row[CN_WaterStage] = water.WaterStage; row[CN_MsgType] = CEnumHelper.MessageTypeToDBStr(water.MessageType); row[CN_TransType] = CEnumHelper.ChannelTypeToDBStr(water.ChannelType); row[CN_RecvDataTime] = water.TimeRecieved.ToString(CDBParams.GetInstance().DBDateTimeFormat); m_tableDataAdded.Rows.Add(row); m_mutexDataTable.ReleaseMutex(); AddDataToDB(); }