我有一个非常慢的方法,我不确定如何优化此方法。我也不太了解LINQ的工作原理,因此,如果解决方案是使用LINQ,请解释一下。非常感谢。该dtExcel方法的参数中的DataTable包含第一部分数据,另一部分_dt来自数据库。通过两个for循环运行的数据大约如下:700(dtExcel)* 10,000(_dt)= 7,000,000个比较。这里的代码:public async Task<DataTable> GetAdressesFromDB(DataTable dtExcel){ try { return await Task.Run(() => { CurrentProgress = 0; ProgressbarDBVisible = true; _dtFoundDuplicates.Clear(); _dt = new DataTable(); _dt = DBConn.GetAllAddresses(dtExcel); ProgressMaximum = dtExcel.Rows.Count; for (int i = 0; i < dtExcel.Rows.Count; i++) { CurrentProgress++; for (int y = 0; y < _dt.Rows.Count; y++) { // Criteria to check duplicates string compareAdressExcel = ""; string compareAdressDB = ""; // Get the setted filter criteria and create both excel and db compare strings string[] criteriaFields = ConfigurationManager.AppSettings["strFilter"].Split(','); foreach (String cField in criteriaFields)
3 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
如果这是sql server,则应该使用ssis。
它具有模糊匹配,这对于匹配来自两个不同来源的地址上的记录几乎是必须的。
我也将使用ssis将数据导入到表中,并对管道中的数据进行任何预处理。
然后可以使用作业来运行整个过程。
- 3 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消