コード例 #1
0
ファイル: Query.cs プロジェクト: qkmaxware/PowerBot
        public override Table Operate(Database db)
        {
            Table            source   = table.Value(db);
            List <Table.Row> toRemove = new List <Table.Row>();

            foreach (Table.Row row in source.rows)
            {
                bool eval = this.eval.Evaluate(row) == "TRUE";
                if (eval)
                {
                    toRemove.Add(row);
                }
            }
            source.rows = source.rows.Except(toRemove).ToList();
            return(source);
        }
コード例 #2
0
ファイル: Query.cs プロジェクト: qkmaxware/PowerBot
        public override Table Operate(Database db)
        {
            Table src = source.Value(db);

            Table.Row row = new Table.Row();
            if (fields.Length != exp.Length)
            {
                throw new Exception("Missing values for insertion query");
            }
            for (int i = 0; i < Math.Min(fields.Length, exp.Length); i++)
            {
                row.values[fields[i]] = (exp[i].Evaluate(row));
            }
            src.rows.Add(row);

            return(src);
        }
コード例 #3
0
ファイル: Query.cs プロジェクト: qkmaxware/PowerBot
        public override Table Operate(Database db)
        {
            Table src = table.Value(db);

            foreach (Table.Row row in src.rows)
            {
                bool eval = this.exp.Evaluate(row) == "TRUE";
                if (!eval)
                {
                    continue;
                }

                for (int i = 0; i < fields.Length; i++)
                {
                    row.values[fields[i]] = values[i].Evaluate(row);
                }
            }

            return(src);
        }
コード例 #4
0
ファイル: Query.cs プロジェクト: qkmaxware/PowerBot
        public override Table Value(Database db)
        {
            Table l = db.tables[left];
            Table r = right.Value(db);

            List <Table.Column> cols = new List <Table.Column>();

            for (int i = 0; i < l.columns.Length; i++)
            {
                Table.Column c = new Table.Column();
                c.name = "left." + l.columns[i].name;
                cols.Add(c);
            }
            for (int i = 0; i < r.columns.Length; i++)
            {
                Table.Column c = new Table.Column();
                c.name = "right." + r.columns[i].name;
                cols.Add(c);
            }

            Table j = new Table(cols.ToArray());

            foreach (Table.Row row in l.rows)
            {
                foreach (Table.Row row2 in r.rows)
                {
                    Table.Row jr = new Table.Row();
                    foreach (KeyValuePair <string, string> pair in row.values)
                    {
                        jr.values["left." + pair.Key] = pair.Value;
                    }
                    foreach (KeyValuePair <string, string> pair in row2.values)
                    {
                        jr.values["right." + pair.Key] = pair.Value;
                    }
                    j.rows.Add(jr);
                }
            }
            return(j);
        }
コード例 #5
0
ファイル: Query.cs プロジェクト: qkmaxware/PowerBot
        public override Table Operate(Database db)
        {
            Table src = source.Value(db);

            Table.Column[] col;
            if (!all)
            {
                col = new Table.Column[fields.Length];
                for (int i = 0; i < fields.Length; i++)
                {
                    col[i]      = new Table.Column();
                    col[i].name = fields[i];
                }
            }
            else
            {
                col = new Table.Column[src.columns.Length];
                for (int i = 0; i < src.columns.Length; i++)
                {
                    col[i]      = new Table.Column();
                    col[i].name = src.columns[i].name;
                }
            }
            Table result = new Table(col);

            foreach (Table.Row row in src.rows)
            {
                bool eval = this.expr.Evaluate(row) == "TRUE";
                if (eval)
                {
                    result.rows.Add(row);
                }
            }

            return(result);
        }