C#large Linq查询冻结Winform UI

时间:2016-04-20 19:26:45

标签: c# winforms linq

我正在创建一个应用程序,将两个数据库进行比较,一个是oracle数据库,另一个是MySQL数据库。在比较两个数据库之后,它将把MySQL数据库丢失的任何数据移动到MySQL数据库中。然后它会更新到可视监视器,告诉最终用户数据已被移动。

我完成比较并移动新线路没有任何问题,但我相信我使用的LINQ查询导致winform UI冻结了将近一分半钟。数据库包含每个18,000 - 25,000行的任何数据。

查询如下所示:

var matched = from table1 in oClone.AsEnumerable()
                              join table2 in mClone.AsEnumerable() on table1.Field<decimal>("CASEID") equals table2.Field<Int64>("CASEID")
                              where table1.Field<decimal>("CASEID") == table2.Field<Int64>("CASEID") || 
                              table1.Field<string>("CASENAME") == table2.Field<string>("CASENAME") || 
                              table1.Field<DateTime>("CREATEDDATE") == table2.Field<DateTime>("CREATEDDATE") || 
                              table1.Field<int>("STUDYMODEID") == table2.Field<int>("STUDYMODEID") || 
                              table1.Field<string>("ENVIRONMENT") == table2.Field<string>("ENVIRONMENT")
                              select table1;
                var missing = from table1 in oClone.AsEnumerable()
                              where !matched.Contains(table1)
                              select table1;

                missingLines = missing.CopyToDataTable();
                AddNewLines(missingLines);   

有什么方法可以优化查询以停止冻结UI?

0 个答案:

没有答案