【发布时间】:2010-04-09 01:29:08
【问题描述】:
我在组合列表时有一点特殊要求。我将尝试用一个例子来说明。假设我正在使用 2 个 GamePlayer 对象列表。 GamePlayer 有一个名为 LastGamePlayed 的属性。通过 GamePlayer.ID 属性标识唯一的 GamePlayer。现在我想将 listA 和 listB 合并到一个列表中,如果两个列表中都存在给定的玩家,我想保留 listA 中的值。
我不能只组合列表并使用比较器,因为我的唯一性基于 ID,如果我的比较器检查 ID,我将无法控制它是选择 listA 还是 listB 的元素。我需要类似的东西:
for each player in listB
{
if not listA.Contains(player)
{
listFinal.Add(player)
}
}
但是,是否有更优化的方法来执行此操作,而不是为 listB 中的每个元素搜索 listA?
****EDIT****:或者,如果我想根据 LastGamePlayed 的值选择我保留的 GamePlayer(而不是知道 ListA 优先于 ListB)怎么办?所以我想要一个唯一的 GamePlayer 对象列表,但对于每个玩家,我想要具有最新 LastGamePlayed 的 GamePlayer 对象?基本上我需要一种方法来确定当有重复的 GamePlayers 时要保留哪个对象。
【问题讨论】:
-
listFinal 是否会包含所有 listA 以及 listB 中不存在于 listA 中的所有项目?