2011-04-15 108 views
0

我的程序是一個同步程序,它每2分鐘同步一次來源A到來源B的數據 - 現在無論如何現在它都會添加新行,但顯然這對於​​生產環境來說並不理想我希望能夠檢查源A中的行是否與源B中的行相同(來自最近的同步)。如果是,請不要在這次執行此同步。比較來自C#中不同來源的2個列表

所以我已經定義的存儲包含所有的字段的結構,並且當執行同步,而不是同步直到源B(除了這不會在源之間匹配任何PK字段),我創建一個結構列表並把結果放在那裏。然後我創建一個該結構列表的新實例,並將來自Source B的最新同步結果放在那裏。

因此理論上,如果自上次同步以來沒有任何變化,那麼除了順序之外,2個列表應該是相同的。但是我怎麼去比較這兩個列表呢?

+0

什麼使對象相同。他們是否需要成爲內存中的同一個對象,還是需要內容? – Jodrell 2011-04-15 09:01:58

+0

您是否定義了列表中的對象類? – Jodrell 2011-04-15 09:05:21

+0

對不起,內容。實際的對象會有所不同,但內容將完全相同 – Chris 2011-04-15 09:17:19

回答

1

我不清楚問題到底是什麼。

但是,如果您需要使用列表而不考慮訂單,則可以使用來自Enumerable的基於集合的操作。如果您有收藏oldnew,則可以使用new.Except(old)(請參閱MSDN documentation for Except)獲取新集合中元素的列表,但不包含在原始元素中。

如果要檢查兩個集合是否包含完全相同的元素,那麼兩個差集(old.Except(new)new.Except(old))的大小應該都爲零。 (意思是沒有元素被添加&沒有元素被刪除)。