[C#]LINQ Intersect() 예제
[C#]LINQ Intersect()
두개의 리스트를 생성 후 교집합 항목만 뽑아내는 예제이다. Except() 연산자와 반대 개념이다.
IEqualityComparer 인터페이스 구현이 필요하다.
List<Student> list1 = new List<Student>();
list1.Add(new Student { Uid = 1, Name = "영희", City = "서울" });
list1.Add(new Student { Uid = 2, Name = "철수", City = "부산" });
list1.Add(new Student { Uid = 3, Name = "똘이", City = "전남" });
List<Student> list2 = new List<Student>();
list2.Add(new Student { Id = 4, Name = "철희", City = "전북" });
list2.Add(new Student { Id = 5, Name = "영희", City = "서울" });
list2.Add(new Student { Id = 6, Name = "철수", City = "부산" });
var list3 = list1.Intersect(list2, new StudentNameComparer()); //교집합 뽑아냄
foreach (var item in list3)
{
Console.WriteLine(item.Name);
}
public class Student
{
public int Uid { get; set; }
public string Name { get; set; }
public string City { get; set; }
}
public class StudentNameComparer : IEqualityComparer<Student>
{
public bool Equals(Student x, Student y)
{
if (string.Equals(x.Name, y.Name, StringComparison.OrdinalIgnoreCase))
{
return true;
}
return false;
}
public int GetHashCode(Student obj)
{
return obj.Name.GetHashCode();
}
}
IEqualityComparer에는 Equals 및 GetHasCode의 두 가지 메서드가 있습니다.