C#

[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의 두 가지 메서드가 있습니다.

Leave a Reply

error: Content is protected !!