コード例 #1
0
        public override IJoinTable <K, T1> RightJoin <T1>(Expression <Func <K, T1, bool> > onExpression,
                                                          JoinSetting joinSetting)
        {
            var lightQuery = new LightQuery <T1>(_context);

            return(new LightJoinTable <K, T1>(this, JoinType.RightJoin, lightQuery, onExpression, _joinSetting,
                                              joinSetting));
        }
コード例 #2
0
ファイル: LightSelect.cs プロジェクト: mingyaaaa/Light.Data2
 public LightSelect(DataContext context, Expression <Func <T, K> > expression, QueryExpression query, OrderExpression order, bool distinct, JoinSetting joinSetting, Region region, SafeLevel level)
     : base(context, expression, typeof(T))
 {
     _query       = query;
     _order       = order;
     _distinct    = distinct;
     _joinSetting = joinSetting;
     _region      = region;
     _level       = level;
 }
コード例 #3
0
        public override IJoinTable <K, T1> RightJoin <T1>(IQuery <T1> query, Expression <Func <K, T1, bool> > onExpression,
                                                          JoinSetting joinSetting)
        {
            var queryBase = query as QueryBase <T1>;

            if (queryBase == null)
            {
                throw new ArgumentException(nameof(query));
            }

            return(new LightJoinTable <K, T1>(this, JoinType.RightJoin, queryBase, onExpression, _joinSetting,
                                              joinSetting));
        }
コード例 #4
0
        public override IJoinTable <K, T1> Join <T1>(IAggregate <T1> aggregate, Expression <Func <K, T1, bool> > onExpression,
                                                     JoinSetting joinSetting)
        {
            var aggregateBase = aggregate as AggregateBase <T1>;

            if (aggregateBase == null)
            {
                throw new ArgumentException(nameof(aggregate));
            }

            return(new LightJoinTable <K, T1>(this, JoinType.InnerJoin, aggregateBase, onExpression, _joinSetting,
                                              joinSetting));
        }
コード例 #5
0
        public override IJoinTable <K, T1> RightJoin <T1>(ISelect <T1> select, Expression <Func <K, T1, bool> > onExpression,
                                                          JoinSetting joinSetting)
        {
            var selectBase = select as SelectBase <T1>;

            if (selectBase == null)
            {
                throw new ArgumentException(nameof(select));
            }

            return(new LightJoinTable <K, T1>(this, JoinType.RightJoin, selectBase, onExpression, _joinSetting,
                                              joinSetting));
        }
コード例 #6
0
        private void runJoin(JoinSetting setting)
        {
            List <Row> left  = helper.DataTable2List(dictDataTable[setting.LeftDTName]);
            List <Row> right = helper.DataTable2List(dictDataTable[setting.RightDTName]);

            List <JoinCondition> joinConditions = new List <JoinCondition>();

            foreach (string[] item in setting.JoinConditions)
            {
                joinConditions.Add(new JoinCondition(item[0], item[1]));
            }

            List <Mapping> mappings = new List <Mapping>();

            foreach (string[] item in setting.Mappings)
            {
                mappings.Add(new Mapping(item[0], item[1], item[2], item[3]));
            }

            BaseJoin join;

            switch (setting.Type)
            {
            case "leftjoin":
                join = new LeftJoin();
                break;

            case "innerjoin":
                join = new InnerJoin();
                break;

            default:
                throw new NotImplementedException();
            }

            join.Left(new GenericEnumerableOperation(left))
            .Right(new GenericEnumerableOperation(right));

            join.JoinCondition(joinConditions);
            join.Mapping(mappings);

            join.PrepareForExecution(new SingleThreadedPipelineExecuter());
            IEnumerable <Row> result = join.Execute(null);
            List <Row>        items  = new List <Row>(result);

            DataTable dtResult = helper.List2DataTable(items);

            dictDataTable.Add(setting.OutputName, dtResult);
        }
コード例 #7
0
 public abstract IJoinTable <T, T1> RightJoin <T1>(IQuery <T1> query, Expression <Func <T, T1, bool> > onExpression, JoinSetting joinSetting);
コード例 #8
0
 public abstract IJoinTable <T, T1> LeftJoin <T1>(Expression <Func <T, T1, bool> > onExpression, JoinSetting joinSetting);
コード例 #9
0
 public abstract IQuery <T> SetJoinSetting(JoinSetting setting);
コード例 #10
0
ファイル: EntityJoinModel.cs プロジェクト: smuki/Light.Data2
 public EntityJoinModel(DataEntityMapping mapping, string aliasTableName, JoinConnect connect, QueryExpression query, OrderExpression order, JoinSetting setting)
 {
     this._mapping = mapping;
     //this._selector = AllSelector.Value;
     this._connect        = connect;
     this._query          = query;
     this._order          = order;
     this._aliasTableName = aliasTableName;
     this._joinMapping    = mapping;
     if ((setting & JoinSetting.QueryDistinct) == JoinSetting.QueryDistinct)
     {
         _distinct = true;
     }
     if ((setting & JoinSetting.NoDataSetEntityNull) == JoinSetting.NoDataSetEntityNull)
     {
         _noDataSetEntityNull = true;
     }
 }
コード例 #11
0
 public AggregateJoinModel(AggregateModel model, string aliasTableName, JoinConnect connect, QueryExpression query, QueryExpression having, OrderExpression order, JoinSetting setting)
 {
     this._model          = model;
     this._connect        = connect;
     this._query          = query;
     this._having         = having;
     this._order          = order;
     this._aliasTableName = aliasTableName;
     this._joinMapping    = model.OutputMapping;
     if ((setting & JoinSetting.NoDataSetEntityNull) == JoinSetting.NoDataSetEntityNull)
     {
         _noDataSetEntityNull = true;
     }
 }
コード例 #12
0
 public AggregateJoinModel(AggregateModel model, string aliasTableName, JoinConnect connect, QueryExpression query, QueryExpression having, OrderExpression order, JoinSetting setting)
 {
     Model          = model;
     Connect        = connect;
     Query          = query;
     Having         = having;
     Order          = order;
     AliasTableName = aliasTableName;
     JoinMapping    = model.OutputDataMapping;
     if ((setting & JoinSetting.NoDataSetEntityNull) == JoinSetting.NoDataSetEntityNull)
     {
         NoDataSetEntityNull = true;
     }
 }
コード例 #13
0
 public SelectJoinModel(SelectModel model, string aliasTableName, JoinConnect connect, QueryExpression query, OrderExpression order, JoinSetting setting)
 {
     this._model          = model;
     this._connect        = connect;
     this._query          = query;
     this._order          = order;
     this._aliasTableName = aliasTableName;
     this._joinMapping    = model.JoinTableMapping;
     if ((setting & JoinSetting.QueryDistinct) == JoinSetting.QueryDistinct)
     {
         _distinct = true;
     }
     if ((setting & JoinSetting.NoDataSetEntityNull) == JoinSetting.NoDataSetEntityNull)
     {
         _noDataSetEntityNull = true;
     }
 }
コード例 #14
0
 public abstract IAggregate <K> SetJoinSetting(JoinSetting setting);
コード例 #15
0
 public abstract IJoinTable <T, T1> RightJoin <T1>(IAggregate <T1> aggregate, Expression <Func <T, T1, bool> > onExpression, JoinSetting joinSetting);
コード例 #16
0
        public override IJoinTable <K, T1> RightJoin <T1>(Expression <Func <T1, bool> > queryExpression,
                                                          Expression <Func <K, T1, bool> > onExpression, JoinSetting joinSetting)
        {
            var lightQuery = new LightQuery <T1>(_context);

            if (queryExpression != null)
            {
                lightQuery.Where(queryExpression);
            }

            return(new LightJoinTable <K, T1>(this, JoinType.RightJoin, lightQuery, onExpression, _joinSetting,
                                              joinSetting));
        }
コード例 #17
0
 public override IAggregate <K> SetJoinSetting(JoinSetting setting)
 {
     _joinSetting = setting;
     return(this);
 }
コード例 #18
0
 public abstract IJoinTable <K, T1> RightJoin <T1>(Expression <Func <K, T1, bool> > onExpression, JoinSetting joinSetting);
コード例 #19
0
 public abstract IJoinTable <K, T1> Join <T1>(Expression <Func <T1, bool> > queryExpression, Expression <Func <K, T1, bool> > onExpression, JoinSetting joinSetting);
コード例 #20
0
 public override IQuery <T> SetJoinSetting(JoinSetting setting)
 {
     _joinSetting = setting;
     return(this);
 }
コード例 #21
0
 public abstract IJoinTable <T, T1> RightJoin <T1>(ISelect <T1> select, Expression <Func <T, T1, bool> > onExpression, JoinSetting joinSetting);
コード例 #22
0
 public SelectJoinModel(SelectModel model, string aliasTableName, JoinConnect connect, QueryExpression query, OrderExpression order, JoinSetting setting)
 {
     Model          = model;
     Connect        = connect;
     Query          = query;
     Order          = order;
     AliasTableName = aliasTableName;
     JoinMapping    = model.JoinTableMapping;
     if ((setting & JoinSetting.QueryDistinct) == JoinSetting.QueryDistinct)
     {
         Distinct = true;
     }
     if ((setting & JoinSetting.NoDataSetEntityNull) == JoinSetting.NoDataSetEntityNull)
     {
         NoDataSetEntityNull = true;
     }
 }