2013-05-07 90 views
-1

我有一個帶有內容對象的列表(List<Content>)。在Content對象中,我有4個字段。比較兩個列表的屬性

ContentID 
ModifiedDate 
Description 
HtmlMarkup 

我有兩個List<Content>,我需要的內容識別(兩個不同的數據庫)進行比較,並查看是否有任何字段具有不同的值,然後我需要得到哪些字段是不同的。

所以可以說我有對象A

ContentID - 1 
ModifiedDate - 1/1/2013 
Description - "This is my first content class" 
HtmlMarkup - "<b>First Content</b> 

而對象B

ContentID - 1 -- these are from two different databases, so contentID will match 
ModifiedDate - 1/1/2013 
Description - "This is a description" 
HtmlMarkup - "<b>Test</b> 

我應該被內容識別比較它們。在這個例子中,我將返回DescriptionID和HtmlMarkup對於ContentID 1的不同。如果ContentID不匹配(意味着它已被刪除或者它不在第二個數據庫中),我也想要抓取它。我怎麼做?

+1

...問題是? – MUG4N 2013-05-07 20:34:43

+2

你的問題在哪裏,你的代碼在哪裏?這讀起來像一個功能請求。 – evanmcdonnal 2013-05-07 20:34:45

+0

幾乎看起來你只想使用[表格比較工具](http://stackoverflow.com/questions/193438/free-tool-to-compare-sql-server-tables)。 – zimdanen 2013-05-07 20:36:11

回答

2

不是最優雅的解決方案,但這樣的事情應該工作。可以修改select來返回你需要的任何數據。

var result = from contentA in contentObjectA 
      join contentB in contentObjectB on contentA.Id equals contentB.Id into contentBB 
      from contentB in contentBB.DefaultIfEmpty(null) 
      select new { 
       ContentAId = contentA.Id 
       //Check if Id exists 
       ExistsInB = contentB == null ? false : true, 
       ModifiedDateDiff = contentB.ModifiedDate == null ? true : contentA.ModifiedDate == contentB.ModifiedDate, 
       DescriptionDiff = contentB.Description == null ? true : contentA.Description == contentB.Description, 
       HtmlMarkupDiff = contentB.HtmlMarkup == null ? true : contentA.HtmlMarkup == contentB.HtmlMarkup 
      };