Linq to Sql:只从db2 -table1中选择在DB2-table2中不存在的项

本文关键字:选择 DB2-table2 不存在 -table1 Sql to 只从 db2 Linq | 更新日期: 2023-09-27 17:50:45

我一直在研究如何在c#项目中正确实现下面的任务。

获取一个特定数据库表(db1)中存在但另一个特定数据库表(db2)中不存在的所有数据

两个表有共同的id

我已经面对了很多关于这个的帖子,但似乎没有一个能解决我的问题。任何帮助吗?

编辑:

Select all data 
on table_x from database_x 
Where item_id from table_x are not found inside table_y from database_y

=>以列表格式返回数据

Linq to Sql:只从db2 -table1中选择在DB2-table2中不存在的项

这是我一直在寻找的解决方案。根据@user1949706的答案,我从两个表中选择了LINQ(也来自不同的数据库)的所有数据,并将其放在内存中。

完整地回答我关于如何用LINQ做到这一点的问题:

//DB1
db1DataContext db1 = new db1DataContext();
//DB2
db2DataContext db2 = new db2DataContext();

//SELECT ALL DATA FROM DB1
var result1 = (from e in db1.Items
               select e
              ).ToList();
//SELECT ALL DATA FROM DB2
var result2 = (from e in db2.Item2s
               select e
              ).ToList();
//SELECT ALL ELEMENTS FROM DB2.TABLE THAT DO NOT EXISTS ON DB1.TABLE BASED ON EXISTING ID's            
var resultFinal = ( from e in result1
                    where !(from m in result2
                            select m.Id).Contains(e.Id)
                    select e
                  ).ToList();

我还要感谢Robert Rouse对这个问题的回答以及其他所有试图帮助我的人。

希望它能帮助别人!

根据这个答案,您可以使用LINQ连接不同数据库上的表。甚至可以跨服务器连接。

另一种选择是读取内存中所需的所有数据并在内存中连接两个表(您仍然可以使用LINQ)。