gpt4 book ai didi

C# 使用 Except 比较列表

转载 作者:太空宇宙 更新时间:2023-11-03 20:07:13 24 4
gpt4 key购买 nike

我已经尝试寻找许多其他问题的答案,但它们要么似乎不相关,要么我的知识不足以知道它们是相关的。

我的问题是比较两个列表( friend (或你关注的人)的 Twitter 关注者之一)

这是我用来收集列表的代码

var friends = user.GetFriends(500).ToList();
var following = user.GetFollowers(500).ToList();
var result = compareFollowingtoFollowers(friends, following);

foreach(var res in result)
{
lstFollowerChecker.Items.Add(res.ScreenName);
}

这是我的 compareFollowingtoFollowers 函数

private List<T> compareFollowingtoFollowers<T>(List<T> friends, List<T> followers)
{
var results = followers.Except(friends).ToList();
return results;
}

我的问题是它没有返回我期望的结果,例如,如果我针对我自己的帐户运行此程序,其中我说有 100 个 friend 并且我关注了 112 个人,它应该返回未关注的 12 个人以下,但它似乎只是将它们全部归还。

我使用的功能是否正确?我读过的其他问题让我相信这一点。

感谢阅读

布莱恩

更新

给出的答案足以让我头脑中的齿轮再次转动,虽然答案仍然略微超出我的理解范围,但我认为它们正是我需要的,以便更好地理解为什么它是返回它所做的,谢谢大家。

最佳答案

您需要有一个自定义比较器来比较您的对象并将其作为第二个参数传递到 .Except 方法中。例如

public class User
{
public int Id { get; set; }
}

public class UserComparer : IEqualityComparer<User>
{
public bool Equals(User x, User y)
{
return x.Id == y.Id;
}

public int GetHashCode(User obj)
{
return obj.Id.GetHashCode();
}
}

关于C# 使用 Except 比较列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410571/

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