1

我一直在研究如何在 ac# 项目中正确实施波纹管任务。

是假装...

获取特定数据库表(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

=> 以列表格式返回数据

4

2 回答 2

5

这是我正在寻找的解决方案。根据@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 对这个问题的回答以及其他所有试图提供帮助的人。

希望它可以帮助别人!

于 2013-01-07T10:24:52.667 回答
2

According to this answer you can join tables over different databases with LINQ. Even join accross servers.

Another option is to read all the data you need in memory and join both tables in memory (you can still use LINQ for that).

于 2013-01-04T20:28:26.277 回答