如何减少解析数据集创建的对象数量
本文关键字:对象 创建 数据集 何减少 | 更新日期: 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"]);
}
}
}