2013-01-04 59 views
1

我一直在解決如何在c#項目中正確實現下列任務。Linq to Sql:從DB1-table1中只選擇DB2-table2上不存在的項目

據pretendended到...

獲取,在一個特定的數據庫中的表(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 

以列表形式

+0

您需要首先使用LINQ查詢來提取所需的數據。你的桌子有一個屬性,可以讓你加入他們? – Derek

+0

DB2是DB1的鏡像,在表結構中略有不同。 但是,兩個平板電腦都有一個允許加入它們的Id。 – Lothre1

+0

你想要做db1減去db2? –

回答

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(); 

我還要感謝羅伯特·勞斯在他anwser到this question和其他人誰試圖幫助。

希望它可以幫助別人!

2

=>返回數據按照this的回答,您可以加入在與LINQ不同數據庫中的表。即使加入跨服務器。

另一種方法是讀取內存中需要的所有數據並將兩個表連接在內存中(您仍然可以使用LINQ)。