【问题标题】:Comparing Two group of lists [duplicate]比较两组列表[重复]
【发布时间】:2011-11-29 07:54:23
【问题描述】:

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

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

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

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

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

在上面的例子中,粗体(标记为**)值应该由比较器产生,我将存储到新列表中。

新列表将是

汽车 车牌号 = 7 楷模 模型 型号 ID = 5 颜色 = 黑色 制作 = 1999

感谢帮助。谢谢!

【问题讨论】:

  • “在上面的例子中,粗体值应该”,除非没有粗体值。
  • 请添加第三个列表,准确显示您想要的输出。
  • 添加粗体为 ** 值和预期输出。谢谢!

标签: c# linq


【解决方案1】:

除非A 中的项目与B 中的项目相同,否则A.Except(B) 将不起作用。您需要在类层次结构中实现Equals,或者创建一个IEqualityComparer 并将其传递给Except 调用

【讨论】:

    【解决方案2】:

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

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

    它将合并 2 个集合,并且不包含重复项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多