C# C语言中优化的几个循环#
我正在寻找一种更好(又称更快)的方法来执行7 for循环,负责将数据从我的应用程序的旧版本导入到新版本,并提供一些修改。循环遍历7个不同的C# C语言中优化的几个循环#,c#,for-loop,optimization,C#,For Loop,Optimization,我正在寻找一种更好(又称更快)的方法来执行7 for循环,负责将数据从我的应用程序的旧版本导入到新版本,并提供一些修改。循环遍历7个不同的数据表,遍历每个行,并使用其列中的值创建一个新的树项元素。每个数据表最多可容纳1,5k个条目(或行) 逻辑如下: 第一个循环负责创建树的根元素,因此必须在其余循环之前执行 至于其他6个,在每次迭代中,它将检查DataRow是否包含要添加到先前创建的相应TreeItem中的有效信息 由于我需要检查TreeItem是否已添加到循环的第一个for,因此我创建了一个
数据表
,遍历每个行
,并使用其列中的值创建一个新的树项
元素。每个数据表
最多可容纳1,5k个条目(或行
)
逻辑如下:
- 第一个循环负责创建树的根元素,因此必须在其余循环之前执行
- 至于其他6个,在每次迭代中,它将检查
是否包含要添加到先前创建的相应DataRow
中的有效信息李>TreeItem
- 由于我需要检查
是否已添加到循环的第一个TreeItem
,因此我创建了一个for
,它将存储每个添加的项及其名称。稍后,我简单地使用带有Dictionary
条件的.ContainsKey
if语句
private bool ImportItems()
{
#region Builds up the structure of the old OptProcess data
//...Creates DataSets, DataTables and Columns
#endregion
try
{
//get all the old data from the file
}
catch (Exception exc)
{
Trace.WriteLine(System.DateTime.Now.ToString() + " - " + exc.ToString());
Trace.WriteLine(System.DateTime.Now.ToString() + " - " + " ");
return false;
}
//create a dictionary containing the imported items and its name
Dictionary<string, customType> AllImportedItems = new Dictionary<string, customType>();
for (int i = 0; i < tableRoots.Rows.Count; i++ )
{
if (tableRoots.Rows[i] != null)
{
DataRow r = tableRoots.Rows[i];
//...Do some operations and add the item
//add it to the list, alongside its original name
AllImportedItems.Add(name, item);
}
}
for (int i = 0; i < table2.Rows.Count; i++ )
{
if (table2.Rows[i] != null)
{
DataRow r_child = table2.Rows[i];
if (AllImportedItems.ContainsKey((string)r_child["Name"]))
{
//...Do some operations and Add the item
}
}
}
//Other 5 for loops similar to the previous one goes on here...
//...
return true;
}
private bool ImportItems()
{
#区域建立旧OptProcess数据的结构
//…创建数据集、数据表和列
#端区
尝试
{
//从文件中获取所有旧数据
}
捕获(异常exc)
{
Trace.WriteLine(System.DateTime.Now.ToString()+“-”+exc.ToString());
Trace.WriteLine(System.DateTime.Now.ToString()+“-”+”);
返回false;
}
//创建包含导入项及其名称的词典
Dictionary AllImportedItems=新字典();
for(int i=0;i
更新:
不管是好是坏,我将尝试更好地解释“导入”过程:
- 在应用程序的上一个版本中,我单击“Export items”,这将创建一个.inf文件,基本上是一个.xml文件,其中填充了有关所有现有项目的信息
- 然后,在新版本的应用程序上,我单击“导入项目”,选择.inf文件,使用
,然后将所有这些信息传递到数据集,这样我就可以根据需要获取这些信息,并将其存储在新格式中,正确地将其分配给新项目字段.ReadXml(pathofthefile)
树
。然后编写采用此元结构的代码,并创建一个全新的树
(或根据需要进行更新)。优化领域:从数据表读取并构建树的代码可能是多线程的,以显著加快速度,甚至考虑到可能需要锁定元结构。打开代码,它们将帮助您。啊。。好的旧数据表。我记得以前和这些人打过架。请随意跳到CR,但请确保您发布了所有代码(而不是“执行某些操作”),否则您的主题将因为是示例代码而被关闭为非主题。除非有其他限制,否则编写SSIS包几乎总是比较容易()将数据从一种格式转换为另一种格式。我将首先重构此方法,因为它相当大,因此更具可读性。您可以将此方法的一部分提取到另一种方法中,该方法使用一个数据表并在其中执行循环,然后您可以优化操作。您还可以使用Datatable.AsEnumerable实现LINQ来操作其数据。分而治之:首先,分离关注点的层次。获取从数据表读取的代码,并将其设为b