汎用で重複するデータのフィルタリング

5239 ワード

1.フィルタするデータのエンティティークラスを作成する:User
 
public class User
{
public User(int id, string name)
{
Id = id;
Name = name;
}

public int Id
{
get;
set;
}

public string Name
{
get;
set;
}
}

2.もう一つのUser比較クラスをカスタマイズする(IEqualityComparerインタフェースを実現する):RemoveRepeatList
 
public class RemoveRepeatList : IEqualityComparer<User>
{
public bool Equals(User x, User y)
{
if (x.Id == y.Id && x.Name == y.Name)
return true;
else
return false;
}
public int GetHashCode(User obj)
{
return 0;
}
}
public class User
{
public User(int id, string name)
{
Id = id;
Name = name;
}

public int Id
{
get;
set;
}

public string Name
{
get;
set;
}
}

3.テスト用例を呼び出す:
            List<User> list = new List<User>();
list.Add(new User(1, " "));
list.Add(new User(1, " "));
list.Add(new User(1, " "));
list.Add(new User(1, " "));
list.Add(new User(2, " "));
list.Add(new User(2, " "));
var query = list.Distinct(new RemoveRepeatList());
foreach (var item in query)
{
Response.Write(" :" + item.Id + " " + " :" + item.Name + "<br/>");
}