2015-12-15 59 views
0

我有一个Web应用程序,它为用户提供更新(不删除或添加)同一页面上的多个记录的功能。当用户提交更改时,我从数据库中提取原始列表,并使用linq将其与更新列表进行比较。任何更改的记录都将放在新列表中并发送到数据库进行更新。 下面是我的代码来比较。在我调试的时候,我可以看到2个列表不同,但代码返回的差异是comparer = null,first = null,second = null。你们可以发现错误吗?比较2个对象列表,并在新列表中返回更改

var Differences = OriginalList.Where(x => !NewList.Any(x1 => x1.ServiceName == x.ServiceName 
                 && x1.ServiceDescription == x.ServiceDescription 
                 && x1.ServiceURL == x.ServiceURL 
                 && x1.OrderIndex == x.OrderIndex 
                 && x1.GroupID == x.GroupID 
                 && x1.Active == x.Active)) 
     .Union(NewList.Where(x => !OriginalList.Any(x1 => x1.ServiceName == x.ServiceName 
                 && x1.ServiceDescription == x.ServiceDescription 
                 && x1.ServiceURL == x.ServiceURL 
                 && x1.OrderIndex == x.OrderIndex 
                 && x1.GroupID == x.GroupID 
                 && x1.Active == x.Active))); 

return Differences; 
+3

有没有使用LINQ的除了法图的理由出差异?有一个重载指定如何比较对象的相等性(或者你可以覆盖x1后面的对象上的Equals)。 – MutantNinjaCodeMonkey

+0

原因是我变得无能。我养成了一个不好的习惯,不要去测试代码来做出改变。感谢提示,队友。 –

+0

啊。我想我们都去过那里。如果每次我写一些东西时我都有一毛钱,我认为这很聪明,只是发现它在实际框架工作中的某处更好实施......我会有很多硬币...... :) – MutantNinjaCodeMonkey

回答