在mvc中动态创建数据集

时间:2017-01-09 03:33:43

标签: c# asp.net-mvc asp.net-mvc-4

实际上我有一些包含N个计划的字符串,例如

"Smith     12345678    PlanA"
"Robert    09876543    PlanB"
"Steve     12345678    PlanA"
"Knae      09876543    PlanB"
"GoldSmith 09090909    planC"
......

如果我们知道计划的数量,我可以使用If条件。但在这里,我不知道多少计划。那么,我如何创建数据表并动态地存储基于planID的每个记录。

结果将类似于

所有记录属于一个数据表中的planA存储,另一个数据表中属于PlanB,依此类推。

寻求帮助。在此先感谢!!!

1 个答案:

答案 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);
}

在您的情况下,您必须更改逻辑以分割每行的值。

请告诉我这是否有用。