public ActionResult <ApiResult <TableModel <DbTableGridViewModel> > > GetTableList(int?dbId, [FromForm] DbTableViewModel model) { var result = new ApiResult <TableModel <DbTableGridViewModel> >(); result.Data = new TableModel <DbTableGridViewModel>(); var db = GetTryDb(dbId.Value); result.Data.Rows = mapper.Map <List <DbTableGridViewModel> > (db.DbMaintenance.GetTableInfoList(false)); var codetable = CodeTableDb.AsQueryable().Where(it => it.DbId == dbId.Value).OrderBy(it => it.TableName).ToList(); foreach (var item in result.Data.Rows) { item.IsImport = codetable.Any(it => it.TableName.Equals(item.Name, StringComparison.CurrentCultureIgnoreCase)) ? "导入" : ""; } if (!string.IsNullOrEmpty(model.name)) { result.Data.Rows = result.Data.Rows.Where(it => it.Name.ToLower().Contains(model.name?.ToLower())).ToList(); } if (model.typeId == "1") { result.Data.Rows = result.Data.Rows.Where(it => !string.IsNullOrEmpty(it.IsImport)).ToList(); } if (model.typeId == "2") { result.Data.Rows = result.Data.Rows.Where(it => string.IsNullOrEmpty(it.IsImport)).ToList(); } result.IsSuccess = true; result.Data.PageNumber = 1; result.Data.PageSize = result.Data.Rows.Count; return(result); }
public static List <DbTableViewModel> GetTableParents(DbModelViewModel model, DbTableViewModel table) { var tableLookup = model.Tables.ToDictionary(t => t.Name); Stack <DbTableViewModel> queue = new Stack <DbTableViewModel>(); queue.Push(table); HashSet <DbTableViewModel> parents = new HashSet <DbTableViewModel>(); while (queue.Any()) { var curr = queue.Pop(); if (parents.Contains(curr) == false) { parents.Add(curr); foreach (var col in curr.Columns) { if (string.IsNullOrEmpty(col.ParentTableName) == false) { var parentTable = tableLookup[col.ParentTableName]; if (parentTable != null) { queue.Push(parentTable); } } } } } parents.Remove(table); return(parents.ToList()); }