Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C桌面应用程序-动态地将查询从一个表更新到另一个表_C#_.net_Sqlite_Linq_Desktop - Fatal编程技术网

C# C桌面应用程序-动态地将查询从一个表更新到另一个表

C# C桌面应用程序-动态地将查询从一个表更新到另一个表,c#,.net,sqlite,linq,desktop,C#,.net,Sqlite,Linq,Desktop,我正在使用IDE Visual Studio 2019开发c.Net桌面应用程序。我在SQLite中有两个表,每个表都有大约100万条记录。我必须根据一些匹配项从表B中更新表a的几列。我还将记录加载到数据表中,以便进行本地处理 搜索和更新字段的条件有时会有所不同,所以我必须构建动态查询 我在表中有记录,也在数据表中有加载记录。因此,任何通过直接表查询或数据表中的本地处理进行更新的方法都是值得赞赏的 遵循以下方法: 使用查询的方法1:在google搜索中发现,我们可以通过SQL中的单个查询轻松地将

我正在使用IDE Visual Studio 2019开发c.Net桌面应用程序。我在SQLite中有两个表,每个表都有大约100万条记录。我必须根据一些匹配项从表B中更新表a的几列。我还将记录加载到数据表中,以便进行本地处理

搜索和更新字段的条件有时会有所不同,所以我必须构建动态查询

我在表中有记录,也在数据表中有加载记录。因此,任何通过直接表查询或数据表中的本地处理进行更新的方法都是值得赞赏的

遵循以下方法:

使用查询的方法1:在google搜索中发现,我们可以通过SQL中的单个查询轻松地将记录从一个表更新到另一个表,但无法在SQLite中将记录从一个表更新到另一个表。我曾尝试过查询方法,但后来发现SQLite不支持

我还尝试在循环中逐个更新记录,在循环中插入查询非常快,对于200K条记录只需4-5秒。但是循环中的更新查询速度非常慢,每秒大约需要9条记录。更新所有记录需要几个小时

使用Linq的方法2:

两个表的架构不相同,但有基于少数列的链接

string field1 = "A";
string field2 = "B";


           var updateQuery = from r1 in table1Data.AsEnumerable()
                              join r2 in table2Data.AsEnumerable()
                              on r1.Field<string>(field1) equals r2.Field<string>(field2)
                              select new { r1, r2 };

这对于单个字段很好,但我需要动态方式,对于多列,列计数将根据用户选择在运行时决定,但我们不能在SQLite中将记录从一个表更新到另一个表是的,我们可以。。。搜索UPSERT需要SQLite>=3.24.0请将这两个表与一些示例数据共享,以便生成相关查询。两个表-假设TableA有15个字段-全部为varchar类型,Table2有15个字段-全部为varchar类型,模式字段名不同,但可能在几个字段值上匹配要比较的字段和要更新的字段由用户选择,所以没有固定字段,这就是为什么我需要动态方法。这个问题可以通过SQLite中的单个更新查询或Linq动态查询来解决。