Нужно отделить эти значения, вызванные в C# в visual studio
У нас есть 3 записи этого типа
!QUANT CMP=1,AMY=1,LIP=1,CBC=1,ESR=1,RF=1;!CALL W;ME6E;5466;;;!CALLED ME6E;5466 !CALLED-;08/29/2013;09:59;ar;LDKH1;;W;!CALLED1 ME6E;5466;08/28/2018;23:31;ar;LT !CALLED1-LC1;;W;
нам нужен такой выход
W;ME6E;5466;;; ME6E;5466;08/29/2013;09:59;ar;LDKH1;;W; ME6E;5466;08/28/2013;23:31;ar;LTLC1;;W;
Что я уже пробовал:
Я попробовал этот код, но он все еще не работает должным образом
try { string strModuleName = string.Empty; strModuleName = parameters["modulename"].ToString(); DataSet dsModuleData = new DataSet(strModuleName); DataTable dtClinicaldata = GetPatientData(connection, parameters, true); DataTable dtValidation = new DataTable(); dtValidation = CreateValidationDataTable("xclinicalvalidations"); List<string> allRows = new List<string>(); foreach (DataRow dr in dtClinicaldata.Rows) { var uniqueOrderIds = (from r in dtClinicaldata.AsEnumerable() select r["OrderId"]).Distinct().ToList(); foreach(var i_row in uniqueOrderIds) { string orderid = Convert.ToString(i_row); var tagcomments = (from r in dtClinicaldata.AsEnumerable() where r.Field<string>("OrderId") == orderid select r["TagComment"]).ToList(); int i = 0; string strtagcomment = ""; foreach (var tagcomm in tagcomments) { string temptagcomment = Convert.ToString(tagcomm); if (temptagcomment.Substring(0, 5).ToUpper() != "!CALL") { var indexofcall = temptagcomment.ToUpper().IndexOf("!CALL"); temptagcomment = temptagcomment.Substring(indexofcall); } if (temptagcomment.Substring(0, 7).ToUpper() == "!CALLED") { var callerstring = temptagcomment.Substring(0, temptagcomment.IndexOf("-")); if (strtagcomment.ToUpper().Contains(callerstring.ToUpper())) { temptagcomment = temptagcomment.Substring(callerstring.Length); } } temptagcomment = temptagcomment.Replace("\0", string.Empty); strtagcomment = strtagcomment + temptagcomment; } string[] allstring = strtagcomment.ToUpper().Split(new[] { "!CALLED"}, StringSplitOptions.RemoveEmptyEntries); foreach (var callstrin in allstring) { var fields = callstrin.Split(new char[] { ';'} ,StringSplitOptions.None); } //allRows.Add(strtagcomment); } } // Do data processing here. dtClinicaldata.TableName = strModuleName; dsModuleData.Tables.Add(dtValidation); dsModuleData.Tables.Add(dtClinicaldata); return dsModuleData; }
Любой может мне в этом помочь.
Garth J Lancaster
Сколько записей вы получаете одновременно ? ваш "образец" предполагает три (3), но можете ли вы получить 1000, 10 000 и т. д. ?
Находятся ли эти "строки" в файле или буфере размера <n>
BillWoodruff
чтобы помочь вам в этом, вам нужно четко описать, какие синтаксические элементы в данных являются инвариантными.