public override SQLiteErrorCode Column(SQLiteVirtualTableCursor cursor, SQLiteContext context, int index)
        {
            this.CheckDisposed();
            SQLiteVirtualTableCursorEnumerator <T> sQLiteVirtualTableCursorEnumerator = cursor as SQLiteVirtualTableCursorEnumerator <T>;

            if (sQLiteVirtualTableCursorEnumerator == null)
            {
                return(this.CursorTypeMismatchError(cursor, typeof(SQLiteVirtualTableCursorEnumerator)));
            }
            if (sQLiteVirtualTableCursorEnumerator.EndOfEnumerator)
            {
                return(this.CursorEndOfEnumeratorError(cursor));
            }
            T current = ((IEnumerator <T>)sQLiteVirtualTableCursorEnumerator).Current;

            if (current == null)
            {
                context.SetNull();
            }
            else
            {
                context.SetString(this.GetStringFromObject(cursor, current));
            }
            return(SQLiteErrorCode.Ok);
        }
 public override SQLiteErrorCode Open(SQLiteVirtualTable table, ref SQLiteVirtualTableCursor cursor)
 {
     this.CheckDisposed();
     cursor = new SQLiteVirtualTableCursorEnumerator <T>(table, this.enumerable.GetEnumerator());
     return(SQLiteErrorCode.Ok);
 }