2013-05-07 88 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 
      };