gpt4 book ai didi

.net - 组合列表但获得唯一成员

转载 作者:行者123 更新时间:2023-12-04 06:55:36 25 4
gpt4 key购买 nike

组合列表时我有一些特殊要求。我将尝试用一个例子来说明。假设我正在处理 2 个 GamePlayer 对象列表。 GamePlayer 有一个名为 LastGamePlayed 的属性。唯一的 GamePlayer 是通过 GamePlayer.ID 属性标识的。现在我想将 listA 和 listB 合并到一个列表中,如果两个列表中都存在给定的玩家,我想保留 listA 中的值。

我不能只是组合列表并使用比较器,因为我的唯一性基于 ID,如果我的比较器检查 ID,我将无法控制它是选择 listA 还是 listB 的元素。我需要类似的东西:

for each player in listB
{
if not listA.Contains(player)
{
listFinal.Add(player)
}
}

但是,是否有更优化的方法来执行此操作,而不是为 listB 中的每个元素搜索 listA?

****编辑****:或者,如果我想根据 LastGamePlayed 的值选择保留哪个 GamePlayer(而不是知道 ListA 优先于 ListB)怎么办?所以我想要一个唯一的 GamePlayer 对象列表,但是对于每个玩家,我想要具有最新 LastGamePlayed 的 GamePlayer 对象?基本上我需要一种方法来确定当有重复的 GamePlayers 时要保留哪个对象。

最佳答案

现在这已经澄清了,问题基本上是这样的:

  • 合并列表A和列表B中的所有元素,如果有任何重复,则保留最新的LastGamePlayed .

  • 我会用一个分组来做到这一点:
    var players = from p in listA.Concat(listB)
    group p by p.ID into g
    select g.OrderByDescending(x => x.LastGamePlayed).First();

    如果性能是一个问题,有“更快”的方法来写这个,但我会从这个开始。

    关于.net - 组合列表但获得唯一成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2604555/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com