private int ADDESBDataToDS(int C_ID, IMessage ESB_Data) { int ESB_ID = -1; if (ESB_Data == null) { return(ESB_ID); } //ESB DSCompare.DTESBRow drESB = dSCompare.DTESB.NewDTESBRow(); drESB.C_ID = C_ID; drESB.Action = ESB_Data.Action; drESB.ResultCode = ESB_Data.ResultCode; drESB.Sender = ESB_Data.Sender; ESB_ID = drESB.ESB_ID;//紀錄ID dSCompare.DTESB.AddDTESBRow(drESB); //detail Dictionary <string, PElement> dicESB = ESB_Data.Parameters as Dictionary <string, PElement>; if (dicESB != null) { foreach (string key in dicESB.Keys) { DSCompare.DTESBDetailRow drESBD = dSCompare.DTESBDetail.NewDTESBDetailRow(); drESBD.ESB_ID = ESB_ID; drESBD.ParameterName = key; drESBD.ParameterValue = dicESB[key].Value; drESBD.ParameterType = dicESB[key].Value.GetType().ToString(); dSCompare.DTESBDetail.AddDTESBDetailRow(drESBD); } } return(ESB_ID); }
private int GetIndexWithBaseParamWithMutiKey(Dictionary <string, string> lstParam, int C_ID, int ESBDATACount) { int intRet = -1; if (lstParam.Count == 0) { return(intRet); } try { lstParam.Keys.Cast <string>().Where(w => w.ToUpper().Trim() == "CARDNO").Select(s => lstParam[s] = lstParam[s].PadLeft(19, '0')).ToList(); DSCompare.DTESBRow drESB = dSCompare.DTESB.Cast <DSCompare.DTESBRow>().Where(w => w.C_ID == C_ID).FirstOrDefault(); int ESB_ID = -1; if (drESB != null) { ESB_ID = drESB.ESB_ID; } Dictionary <string, string> lstParamCompare = new Dictionary <string, string>(); bool blnCompare = false; for (int i = 0; i < ESBDATACount; i++) { lstParamCompare.Clear(); foreach (string sParameterName in lstParam.Keys) { DSCompare.DTESBDetailRow drESBD = dSCompare.DTESBDetail.Cast <DSCompare.DTESBDetailRow>().Where(w => w.ESB_ID == ESB_ID && w.ParameterName == sParameterName + i.ToString()).FirstOrDefault(); if (drESBD == null) { continue; } if (lstParamCompare.ContainsKey(sParameterName)) { lstParamCompare[sParameterName] = drESBD.ParameterValue.ToString().Trim(); } else { lstParamCompare.Add(sParameterName, drESBD.ParameterValue.ToString().Trim()); } } blnCompare = lstParam.Keys.Cast <string>().Where(w => lstParamCompare.ContainsKey(w) && lstParam[w] == lstParamCompare[w]).Count() == lstParam.Count; if (blnCompare) { intRet = i; break; } } } catch (Exception ex) { this.m_Log.WriteLog("GetIndexWithBaseParamWithMutiKey", ex.Message); intRet = -1; } return(intRet); }