public ActionResult ExportCfg() { var uuidDict = (from device in db.device select new { device.alias, device.uuid } ).ToDictionary(a => a.alias, a => a.uuid); var eventDict = (from linkage_event in db.linkage_event select new { linkage_event.name, linkage_event.value } ).ToDictionary(a => a.name, a => a.value); var operationDict = (from linkage_operation in db.linkage_operation select new { linkage_operation.name, linkage_operation.value } ).ToDictionary(a => a.name, a => a.value); var algorithmDict = (from linkage_algorithm in db.linkage_algorithm select new { linkage_algorithm.name, linkage_algorithm.value } ).ToDictionary(a => a.name, a => a.value); var trgList = (from linkage_trigger in db.linkage_trigger select linkage_trigger).ToList(); for (int i = 0; i < trgList.Count; i++) { try { var trigger = trgList[i].trigger; //整合为联动对象 LinkageObj linkageObj = new LinkageObj(); linkageObj.trigger = eventDict[trigger]; linkageObj.delay = (int)trgList[i].delay; linkageObj.repeat = trgList[i].repeat; linkageObj.sequence = new Sequence(); var istrList = (from linkage_instruction in db.linkage_instruction where linkage_instruction.trigger == trigger select new Instruction { operation = linkage_instruction.operation, detail = linkage_instruction.detail, uuid = linkage_instruction.uuid }).ToList(); linkageObj.sequence.num = istrList.Count; foreach (var item in istrList) { item.operation = operationDict[item.operation]; if (!Regex.IsMatch(item.detail, @"^[+-]?\d*[.]?\d*$")) //判断是否为数字字符串注意斜杠转义 { item.detail = algorithmDict[item.detail]; } item.uuid = uuidDict[item.uuid]; } linkageObj.sequence.instruction = istrList; linkageObj.ToJson(); //将linkageJson发送到genbox接口 JavaScriptSerializer js = new JavaScriptSerializer(); MyLinkage(linkageObj.trigger, js.Serialize(linkageObj)); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); } } return(RedirectToAction("Index")); }