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))); }
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); }
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)); }
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))); }