/// <summary> /// 直接插入行数据 /// </summary> /// <param name="pk">主键</param> /// <param name="ary">数组</param> /// <param name="size">长度</param> public virtual void AddRow(double pk, double[] ary, int size) { m_keys.push_back(pk); FCDataRow row = new FCDataRow(ary, size); m_rows.push_back(row); }
/// <summary> /// 移除指定索引的数据 /// </summary> /// <param name="rowIndex">行索引</param> public virtual void removeAt(int rowIndex) { try { m_keys.remove_at(rowIndex); FCDataRow row = m_rows.get(rowIndex); row.clear(); m_rows.remove_at(rowIndex); } catch { } }
/// <summary> /// 移除数据 /// </summary> /// <param name="pk">主键</param> public virtual void remove(double pk) { try { int index = getRowIndex(pk); m_keys.remove_at(index); FCDataRow row = m_rows.get(index); row.clear(); m_rows.remove_at(index); } catch { } }
/// <summary> /// 添加数值主键 /// </summary> /// <param name="num">数值</param> /// <param name="newRow">数据行</param> private FCDataRow addKey(double num) { if (m_keys.size() == 0 || num > m_keys.get(m_keys.size() - 1)) { m_keys.push_back(num); FCDataRow newRow = new FCDataRow(m_colsCapacity, m_colsStep); m_rows.push_back(newRow); return(newRow); } else { int begin = 0; int end = m_keys.size() - 1; int sub = end - begin; while (sub > 1) { int half = begin + sub / 2; double hf = m_keys.get(half); if (hf > num) { end = half; } else if (hf < num) { begin = half; } sub = end - begin; } if (num < m_keys.get(begin)) { m_keys.insert(begin, num); FCDataRow newRow = new FCDataRow(m_colsCapacity, m_colsStep); m_rows.insert(begin, newRow); return(newRow); } else if (num > m_keys.get(end)) { m_keys.insert(end + 1, num); FCDataRow newRow = new FCDataRow(m_colsCapacity, m_colsStep); m_rows.insert(end + 1, newRow); return(newRow); } else { m_keys.insert(begin + 1, num); FCDataRow newRow = new FCDataRow(m_colsCapacity, m_colsStep); m_rows.insert(begin + 1, newRow); return(newRow); } } }
/// <summary> /// 添加数据,主键为日期 /// </summary> /// <param name="pk">主键</param> /// <param name="colName">列名称</param> /// <param name="value">值</param> public virtual void set(double pk, int colName, double value) { FCDataRow row = null; int index = getRowIndex(pk); if (index == -1) { row = addKey(pk); row.fillEmpty(m_columns.size()); } else { row = m_rows.get(index); } int colIndex = getColumnIndex(colName); row.set(colIndex, value); }
/// <summary> /// 清除数据 /// </summary> public virtual void clear() { if (m_keys != null) { m_keys.clear(); } if (m_rows != null) { for (int i = 0; i < m_rows.size(); i++) { FCDataRow row = m_rows.get(i); if (row != null) { row.delete(); } } m_rows.clear(); } }