/// <summary> /// Load cache /// </summary> /// <returns>Return cached columns</returns> public ValueTableColumn[] LoadCache() { Dictionary <ValueTableColumn, ArrayV8> columnValuesByIndex = new Dictionary <ValueTableColumn, ArrayV8>(); for (int i = 0; i < Columns.Count; i++) { var col = Columns[i]; try { var valueTypes = col.ValueType.Types; if (valueTypes.Length != 1 || valueTypes[0].Type == TypeEnum.Unknown) { continue; } } catch { continue; } ArrayV8 columnValuesArr = UnloadColumn(col); columnValuesArr.LoadCache(); columnValuesByIndex[col] = columnValuesArr; } if (columnValuesByIndex.Count == 0) { return(new ValueTableColumn[0]); } int rowsCount = this.Count; for (int i = 0; i < rowsCount; i++) { ValueTableRow row = (ValueTableRow)GetIndexerFromCache( i.ToString(), () => new ValueTableRow(this, i) ); foreach (KeyValuePair <ValueTableColumn, ArrayV8> pair in columnValuesByIndex) { row[pair.Key] = pair.Value[i]; } } ValueTableColumn[] cachedColumns = new ValueTableColumn[columnValuesByIndex.Count]; columnValuesByIndex.Keys.CopyTo(cachedColumns, 0); Array.Sort(cachedColumns, (a, b) => System.Collections.Comparer.DefaultInvariant.Compare(a.Index, b.Index)); return(cachedColumns); }
/// <summary> /// ЗагрузитьКолонку (LoadColumn) /// </summary> /// <param name="values"></param> /// <param name="columnName"></param> public void LoadColumn(ArrayV8 values, string columnName) { InvokeV8Method("LoadColumn", values.Ptr, columnName); }
/// <summary> /// ЗагрузитьКолонку (LoadColumn) /// </summary> /// <param name="values"></param> /// <param name="columnIndex"></param> public void LoadColumn(ArrayV8 values, int columnIndex) { InvokeV8Method("LoadColumn", values.Ptr, columnIndex); }