比较两组列表

时间:2011-11-28 20:23:35

标签: c# linq

  

可能重复:
  Comparing two lists which has lists within them

我有班级汽车和班级模特。 Car有许多属性,例如CarId和List<Models>。模型具有各种属性,如ModelID,Color,Make。我有一个汽车列表(来自最终用户)称之为A然后我有几个汽车列表(来自DB)称之为B。 A有一个Car列表,​​其中B有多个Car列表,​​我想比较这两个包括模型。

我尝试使用Except,但这似乎不起作用。

假设列表A有一个Car和两个模型

Car
carId = 1 
Models
  Model  
  ModelId = 1
  **color = black
  make = 1999** 

  Model  
  ModelId = 3
  color = white
  make = 2004

列表B有2个项目

Car
carId = 5
Models
  Model 
  ModelId = 2
  color = blue
  make = 2000 

  Model
  ModelId = 3
  color = white
  make = 2010

Car
carId = 7
Models
  Model
  ModelId = 5
  **color = black
  make = 1999** 

  Model
  ModelId = 9
  color = grey
  make = 2011

在上面的示例中,应通过比较器生成粗体(标记为**)值,我将将其存储到新列表中。

新名单将是

汽车     carId = 7     楷模       模型       ModelId = 5       颜色=黑色       make = 1999

感谢帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

除非A.Except(B)中的项目与A中的项目相同,否则

B将无效。您需要在类层次结构中实施Equals,或创建IEqualityComparer并将其传递给Except调用

答案 1 :(得分:0)

查看IEnumerable.Union,这可能有助于解决您的问题

http://msdn.microsoft.com/en-us/library/bb341731.aspx

它将合并2组而不包括重复项。