从哈希集中选择所有特定项目
本文关键字:项目 哈希 集中 选择 | 更新日期: 2023-09-27 18:31:29
我有一个简单的类叫做User:
public class User
{
public int ID { get; set; }
public int MI { get; set; }
public User(int id, int mi)
{
ID = ID;
MI = mi;
}
}
稍后,我有一个用户的哈希集,我想从中获取 ID 并分配给 HashSet 中的 HashSet,如下所示:
HashSet<Users> _users = new HashSet<>();
//code where several User objects are assigned to _users
HashSet<int> _usersIDs = new HashSet<int>();
_usersIDs = _users.Select("ID")
但这不起作用,我怎样才能成功地将_users中的所有 int ID 分配给新的 HashSet?
你可以做:
HashSet<int> _usersIDs = new HashSet<int>(_users.Select(user=> user.ID));
但是,如果您要在HashSet<T>
中使用它并且可能Eqauls
,则应覆盖User
类的GetHashCode
public class User
{
protected bool Equals(User other)
{
return ID == other.ID && MI == other.MI;
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != this.GetType()) return false;
return Equals((User) obj);
}
public override int GetHashCode()
{
unchecked
{
return (ID*397) ^ MI;
}
}
public int ID { get; set; }
public int MI { get; set; }
public User(int id, int mi)
{
ID = id; //based on @Jonesy comment
MI = mi;
}
}