【发布时间】:2015-11-04 10:25:33
【问题描述】:
我想问一下是否有一种优雅而有效的方法可以将两个 MyClass 列表合并为一个?
MyClass 如下所示:
- ID:
int - 姓名:
string - 分机号:
int?
列表是从不同的来源填充的,列表中的对象确实共享 ID,所以看起来像这样:
MyClass instance from List1
ID = someInt
Name = someString
ExtID = null
List2 中的 MyClass 实例
ID = someInt (same as List1)
Name = someString (same as List1)
ExtID = someInt
我基本上需要的是结合这两个列表,所以结果是一个包含:
ID = someInt (from List1)
Name = someString (from List1)
ExtID = someInt (null if no corresponding item - based on ID - on List2)
我知道我可以简单地使用 foreach 循环来做到这一点,但我很想知道是否有更优雅且可能更受欢迎(由于性能、可读性)的方法?
【问题讨论】:
-
编写一个
Merge函数,将具有相同ID的两个实例合并为一个 - 然后您可以连接列表,按 id 分组,最后使用合并函数折叠/减少组 -这就是我为了可读性而做的事情 - 为了提高性能,你可能对排序和循环没问题