C# 在mvc中动态创建数据集

C# 在mvc中动态创建数据集,c#,asp.net-mvc,asp.net-mvc-4,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动态存储每条记录呢 结果会是这样

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

"Smith     12345678    PlanA"
"Robert    09876543    PlanB"
"Steve     12345678    PlanA"
"Knae      09876543    PlanB"
"GoldSmith 09090909    planC"
......
如果我们知道计划的数量,我可以使用If条件。但我不知道有多少计划。那么,如何创建一个数据表并基于planID动态存储每条记录呢

结果会是这样

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


正在寻求帮助。提前感谢

您可以使用以下代码使用DataTables创建数据集:

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);
}
var list=new[]{new{Name=”“,code=“”,Plan=“”}}.ToList();
对于(变量i=0;i!String.IsNullOrEmpty(item.Plan)).Select(item=>item.Plan.Distinct().ToList();
var数据集=新数据集();
foreach(计划中的var计划)
{
var数据表=新数据表(计划);
Add(新的DataColumn(“Name”,typeof(String));
Add(新的DataColumn(“Code”,typeof(String));
dataTable.Columns.Add(新的DataColumn(“Plan”,typeof(String));
var childs=list.Where(item=>item.Plan==Plan.ToList();
foreach(childs中的变量child)
{
var newRow=dataTable.newRow();
newRow[“Name”]=子.Name;
newRow[“Code”]=子.Code;
新行[“计划”]=子计划;
dataTable.Rows.Add(newRow);
}
dataSet.Tables.Add(dataTable);
}
在您的情况下,必须将逻辑更改为每行分割值


让我知道这是否有用。

如何获取输入数据?实际上,我正在上载一个文件并使用(StreamReader sr=new StreamReader(Path.Combine(Server.MapPath(~/Downloads)){string s=sr.ReadToEnd();string[]Mem=s.Split(新字符串[]{“\n”,“\r\n”},StringSplitOptions.RemoveEmptyEntries);}是否要创建System.Data.DataSet的实例?我在这里使用字符串[]Mem要将整个字符串一分为二,正如我在问题中提到的,一旦所有计划存储到数据表中(根据计划),我需要将数据表存储在datssetBut中,这段代码似乎将所有记录存储在同一个数据表中。对吗?是的,是否要在数据集内创建多个数据表?因此,在创建数据表实例之前,您必须添加for循环是的,我希望存储这样的记录。如果记录属于planA,它应该存储在一个数据表中,如果记录属于planB,它应该存储在另一个数据表中,依此类推“Smith 12345678 planA”。。。此字符串应存储在一个数据表中。“罗伯特09876543计划B”。。。。此字符串应存储在一个数据表中。这样就完成了,请检查一下,不要忘了标记为正确答案