вы смотрели на расширение Except()
?
var nonMembers = PersonsDB.GetAll().Except(Members);
Это почти простой английский.
РЕДАКТИРОВАТЬ
Предполагая, что
PersonsDB.GetAll()
возвращает IEnumerable<Person>
Members
является IEnumerable<Member>
Member
простирается Person
:
вам нужно написать свой собственный компаратор:
public class IsPersonMemberComparer : EqualityComparer<Person>
{
public override bool Equals(Person x, Person y)
{
var maybeMember = x;
var definitelyMember = (Member) y;
// test whether x and y are the same person
return maybeMember.SocialSecurityNumber == definitelyMember.SocialSecurityNumber;
}
public override int GetHashCode(Person obj)
{
return obj.GetHashCode();
}
}
Теперь укажите этот компаратор при проверке равенства.
var comparer = new IsPersonMemberComparer();
var nonMembers = PersonsDB.GetAll().Except(Members, comparer);
Что отношение между '' Person' и Member' таблицы? – ekad
Вы используете linq-to-sql? LINQ к сущности? Пожалуйста, отметьте соответствующим образом. Что вы думаете о своем нынешнем подходе? –
Person! = Member в любом случае, поэтому '! Members.Contains (Person)' всегда будет true. –