比较IEnumerable列表并从其中一个列表中删除重复项

本文关键字:列表 一个 删除 IEnumerable 比较 | 更新日期: 2023-09-27 18:16:49

我有以下模型类

 public class AssignUserViewModel
    {
        public IEnumerable<User> Viewrlist { get; set; }
        public IEnumerable<User> AssignedViewrlist { get; set; }
    }

我像下面这样将值绑定到它。比较objassignuser.Viewrlisttryobjassignuser.AssignedViewrlist,然后从objassignuser.Viewrlisttry中删除重复,如下所示。但是这个不能正常工作

 AssignUserViewModel objassignuser = new AssignUserViewModel();
 objassignuser.Viewrlist = ..
 objassignuser.AssignedViewrlist = ..
 IEnumerable<User> result = (objassignuser.Viewrlist).Except( objassignuser.AssignedViewrlist );
 objassignuser.Viewrlist = null;
 objassignuser.Viewrlist = result;

比较IEnumerable列表并从其中一个列表中删除重复项

必须使User类实现IEquatable<T>接口。

一个简单的实现可以像这样:

class User: IEquatable<User>
{
    public int Id{ get; set; }
    public string UserName { get; set; }
    public bool Equals(User other)
    {
        return Id == other.Id;
    }
    public override int GetHashCode()
    {
        return Id.GetHashCode();
    }
}

>