두 가지 목록이 있습니다. 첫 번째는 모든 팀 멤버입니다 목록 1 두 번째는 선택한 팀 구성원입니다 리스트 2 . 선택한 팀원 list2 항목을 list1 에서 제거하고 싶습니다. 여기에 내 코드가 있지만 그렇지 않습니다. 학생은 삭제되지 않습니다.
foreach (var list in list2.ToList())
{
if (list1.Contains(list))
{
list1.Remove(list);
}
}
다음은 list1에서 항목을 제거합니다.
list1.RemoveAll(l => list2.Contains(l));
대체 솔루션-list2의 항목을 제외하고 list1의 항목으로 새 목록을 만들 수 있습니다 (참고-중복 항목도 제거됨).
var result = list1.Except(list2).ToList();
결과를 열거하기 만하면 목록을 만들 필요가 없습니다 ToList()
. 호출 을 제거 할 수 있습니다 .
참고 : 기본 유형 (int, string 등) 대신 사용자 지정 개체를 처리하는 경우 기본적으로 개체가 참조로 비교됩니다. 즉, 객체의 모든 필드가 동일하지만 클래스의 다른 인스턴스 인 경우 동일하지 않은 것으로 간주됩니다. 필드 값으로 객체를 비교하려면 클래스의 메서드 Equals
와 GetHashCode
메서드를 재정의 하거나 클래스에 대한 사용자 지정 비교자를 만들어야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다