using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq.Expressions; namespace InABox.Core { public interface ICoreTable { IList Columns { get; } IList Rows { get; } Dictionary?>> Setters { get; } string TableName { get; } void CopyTo(CoreTable table); void CopyTo(DataTable table); TValue[] ExtractValues(Expression> column, bool distinct = true); TValue[] ExtractValues(string column, bool distinct = true); void Filter(Func predicate); void LoadColumns(Type T); void LoadDictionary(Dictionary dictionary, Expression> key, Expression> value); void FillRow(CoreRow row, CoreRow from); void FillRow(CoreRow row, object obj); void LoadRows(IEnumerable rows); void LoadRows(IEnumerable objects); CoreRow NewRow(bool populate = false); DataTable ToDataTable(string name = "", IColumns? additionalColumns = null); IDictionary ToDictionary(string keycol, string displaycol, string sortcol = ""); IEnumerable ToObjects() where T : BaseObject, new(); Dictionary ToDictionary(Expression> key, Expression> value, Expression>? sort = null); Dictionary ToDictionary(Expression> key, Expression>[] values, Expression>? sort = null); } }