コード例 #1
0
        public async Task <IActionResult> DataSetMultiJoin([FromBody] DataSetJoinQuery body)
        {
            var query = from projectdata in _efCoreHelper.GetList <ProjectDatas> (_context).Where(x => x.ProjectId == body.MapId)
                        join dataset in _efCoreHelper.GetList <DataSet> (_context).Where(x => x.DataType == 0)
                        on projectdata.DataSetId equals dataset.DataSetId
                        select new { ProjectData = projectdata, DataSet = dataset };

            var datas = new Dictionary <string, List <Dictionary <string, object> > > ();

            foreach (var item in query)
            {
                datas[item.DataSet.DataSetName] = JsonConvert.DeserializeObject <List <Dictionary <string, object> > > (item.DataSet.Data);
            }
            var lines = new List <JoinLine>();

            foreach (var line in body.Lines)
            {
                var tmp = new JoinLine();
                tmp.FromTableName = query.Where(x => x.ProjectData.ProjectDataId == line.FromTableId).SingleOrDefault()?.DataSet.DataSetName;
                tmp.ToTableName   = query.Where(x => x.ProjectData.ProjectDataId == line.ToTableId).SingleOrDefault()?.DataSet.DataSetName;
                lines.Add(tmp);
            }
            var result = _joinHelper.MultiJoin(datas, lines.ToArray());

            if (result.Status != 200)
            {
                return(BadRequest(result.Result));
            }
            await Task.CompletedTask;

            return(Ok(JsonConvert.SerializeObject(result.Result, Formatting.Indented)));
        }
コード例 #2
0
        public bool ExecuteCommand(JoinLinesCommandArgs args, CommandExecutionContext context)
        {
            using (context.OperationContext.AddScope(allowCancellation: false, description: "Joining selected lines"))
            {
                args.TextView.TextBuffer.Insert(0, "// Invoked from modern command handler\r\n");
                JoinLine.JoinSelectedLines(args.TextView, EditorOperations.GetEditorOperations(args.TextView));
            }

            return(true);
        }
コード例 #3
0
        public int Exec(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
        {
            if (pguidCmdGroup == JoinLinesCommandSet && nCmdID == JoinLinesCommandId)
            {
                this.textView.TextBuffer.Insert(0, "// Invoked from legacy command filter\r\n");
                JoinLine.JoinSelectedLines(this.textView, contextProvider.EditorOperations.GetEditorOperations(this.textView));
                return(VSConstants.S_OK);
            }

            return(NextTarget.Exec(ref pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut));
        }
コード例 #4
0
        public async Task <IActionResult> DataSetInnerJoin([FromBody] JoinResultDto body)
        {
            var projectDatas = _efCoreHelper.GetList <ProjectDatas>(_context).Where(x => x.ProjectId == body.ProjectId);
            //join projectDatas、dataset
            var query = from projectData in projectDatas
                        join dataset in _efCoreHelper.GetList <DataSet>(_context).Where(x => x.DataType == 0)
                        on projectData.DataSetId equals dataset.DataSetId
                        select new {
                TableId   = projectData.ProjectDataId,
                TableName = dataset.DataSetName,
                Data      = dataset.Data
            };
            var projectDataSets = query.ToList();
            //組合 joinLine[]
            var joinLines = new List <JoinLine>();

            foreach (var item in body.Lines)
            {
                var tmp = new JoinLine()
                {
                    FromTableName = projectDataSets.SingleOrDefault(x => x.TableId == item.FromTableId).TableName,
                    ToTableName   = projectDataSets.SingleOrDefault(x => x.TableId == item.ToTableId).TableName,
                    FromColName   = item.FromColName,
                    ToColName     = item.ToColName
                };
                joinLines.Add(tmp);
            }

            // 名稱對應唯一編號
            var nameIds = new List <dynamic>();
            //組合 data:{"TableName1":[{}],"TableName2":[]}
            var datas = new Dictionary <string, List <Dictionary <string, object> > > ();

            foreach (var item in projectDataSets)
            {
                var tmp = new {
                    Name = item.TableName,
                    Id   = item.TableId
                };
                nameIds.Add(tmp);
                datas[item.TableName] = JsonConvert.DeserializeObject <List <Dictionary <string, object> > > (item.Data);
            }
            //joinhelper multijoin
            var result = _joinHelper.MultiJoin(datas, joinLines.ToArray());
            await Task.CompletedTask;

            if (result.Status != 200)
            {
                return(BadRequest(new { result = result.Result }));
            }
            return(Ok(JsonConvert.SerializeObject(new { Tables = nameIds, Data = result.Result }, Formatting.Indented)));
        }