如何减少解析数据集创建的对象数量

本文关键字:对象 创建 数据集 何减少 | 更新日期: 2023-09-27 18:21:17

数据集由一个包含两列的表组成。表名称=项目。一个列名=名称,另一个列名=Resource。存在多个重复的项目名称。

var dataset = FakeDataset.CreateDataset();
        var projectList = new List<Project>();
        foreach (DataTable table in dataset.Tables)
        {
            foreach (DataRow dataRow in table.Rows)
            {
                projectList.Add(new Project { Name = Convert.ToString(dataRow["Name"]), Resource = Convert.ToString(dataRow["Resource"]) });
            }
        }

现在,我每次都为数据集中的单个项目名称创建一个Project对象。我想要的是-只为数据集中唯一的项目名称创建项目对象。我是一个初学者,所以一个简单的解决方案会很好。

如何减少解析数据集创建的对象数量

未经测试,我不确定我是否正确理解您,但根据我的假设你想要这样的东西:

    var dataset = FakeDataset.CreateDataset();
                    var projectList = new List<Project>();
                    foreach (DataTable table in dataset.Tables)
                    {
                        foreach (DataRow dataRow in table.Rows)
                        {
                              if(projectList.Any(Project => Project.Name == dataRow["Name"]))
                                       projectList.Add(new Project { Name = Convert.ToString(dataRow["Name"]), Resource = Convert.ToString(dataRow["Resource"]) });
                        }
                    }

编辑:

var dataset = FakeDataset.CreateDataset();
var projectList = new List<Project>();
    foreach (DataTable table in dataset.Tables)
    {
            foreach (DataRow dataRow in table.Rows)
            {
                    if (!projectList.Any(Project => Project.Name == Convert.ToString(dataRow["Name"])))
                    {
                        projectList.Add(new Project { Name = Convert.ToString(dataRow["Name"]), Resource = Convert.ToString(dataRow["Resource"]) });
                    }
                    else
                    {
                        Project p = projectList.Find(Project => Project.Name == Convert.ToString(dataRow["Name"]));
                        projectList[projectList.IndexOf(p)].Resource += "'r'n" + Convert.ToString(dataRow["Name"]);
                    }
            }
     }