实际上我有一些包含N个计划的字符串,例如
"Smith 12345678 PlanA"
"Robert 09876543 PlanB"
"Steve 12345678 PlanA"
"Knae 09876543 PlanB"
"GoldSmith 09090909 planC"
......
如果我们知道计划的数量,我可以使用If条件。但在这里,我不知道多少计划。那么,我如何创建数据表并动态地存储基于planID的每个记录。
结果将类似于
所有记录属于一个数据表中的planA存储,另一个数据表中属于PlanB,依此类推。
寻求帮助。在此先感谢!!!
答案 0 :(得分:1)
您可以使用以下代码创建带有DataTables的DataSet:
var list = new[] { new { Name = "", Code = "", Plan = "" } }.ToList();
for (var i = 0; i < mem.Length; i++)
{
// change the logic to extract all values from line
var values = mem[i].Split(',');
list.Add(new { Name = values[0].Trim(), Code = values[1].Trim(), Plan = values[2].Trim() });
}
var plans = list.Where(item => !String.IsNullOrEmpty(item.Plan)).Select(item => item.Plan).Distinct().ToList();
var dataSet = new DataSet();
foreach (var plan in plans)
{
var dataTable = new DataTable(plan);
dataTable.Columns.Add(new DataColumn("Name", typeof(String)));
dataTable.Columns.Add(new DataColumn("Code", typeof(String)));
dataTable.Columns.Add(new DataColumn("Plan", typeof(String)));
var childs = list.Where(item => item.Plan == plan).ToList();
foreach (var child in childs)
{
var newRow = dataTable.NewRow();
newRow["Name"] = child.Name;
newRow["Code"] = child.Code;
newRow["Plan"] = child.Plan;
dataTable.Rows.Add(newRow);
}
dataSet.Tables.Add(dataTable);
}
在您的情况下,您必须更改逻辑以分割每行的值。
请告诉我这是否有用。