私の読書によると、少なくとも 1 つのアクティブなアドレスがある場合にのみ、クエリは人 1234 のみを取得します。ただし、Person 1234 に関連するすべてのアドレスが含まれます。たとえば、Person 1234 にアクティブなアドレスが 1 つと非アクティブなアドレスが 5 つある場合、Person 1234 の詳細と、アクティブなアドレスだけでなく、合計 6 つのアドレスが取得されます。
あなたの目的のために、サブクエリで十分だと思います。
var person = repositoryProvider.Repository.GetQuery<Person>()
.Where (a => a.PersonID ==1234)
.Include(a => a.Address)
.Include(a => a.Employer)
.Select (p => new Person { Id = p.Id, // <-- set the person's properties that you need using the person details that you have extracted.
FirstName = p.FirstName,
Employer = p.Employer.ToList()
Addresses = p.Addresses.Where(a => a.IsActive == true) // <-- transform the resulting entity such that it will only return active addresses
}).FirstOrDefault();
別のおそらく読みやすい方法は、2 つの部分に分割することです。最初の部分は、人物の詳細を抽出します。
var person = repositoryProvider.Repository.GetQuery<Person>()
.Where (a => a.PersonID ==1234)
.Include(a => a.Addresses)
.Include(a => a.Employer)
.Select (p => p);
次に、2 番目の部分で、その人のアドレスをアクティブなアドレスのみに制限します。
person.Addresses = person.Addresses.Where (a => a.IsActive == true).ToList();