은 내가 나던 다음 코드는 제대로 동작했다 :왜 .Except() 및 Intersect() LINQ를 사용하여 여기에서 작동하지 않습니다?
컨텍스트 : 내가 두 개체 목록이 있습니다
* listOne가 100 개 개의 레코드를
* listTwo 70 개 기록
많은있다 그것들은 (두 목록 모두에서) 동일한 Id 속성을가집니다. 이 코드를 실행하고 (30 있어야한다)는 여전히 100 개 개의 레코드가있는 결과
listOneOnlyItems
조사 후
var listOneOnlyItems = listOne.Except(listTwo, new ItemComparer());
여기에 비교 자
public class ItemComparer : IEqualityComparer<Item>
{
public bool Equals(Item x, Item y)
{
if (x.Id == y.Id)
return true;
return false;
}
public int GetHashCode(Item obj)
{
return obj.GetHashCode();
}
}
입니다. 누구든지 나를 도울 수 있습니까?
IEnumerable<Item> sharedItems = listOne.Intersect(listTwo, new ItemComparer());
수익을 실행 또한
는
"return (x.Id == y.Id)"이라고 입력하면됩니다. – Gelatin
@ Simon Brown - 감사하지만 질문에 대한 답변에 도움이되지 않습니다. – leora
"Item"은 Id 이외의 것을 사용하여 GetHashCode를 구현합니까? –