the problem in short
we have a lambda expression used in the Where clause, which is not returning the \"expected\" result.
quick summary
Try writting the lambda with the same conditions as the delegate. like this:
List analysisObjects =
analysisObjectRepository.FindAll().Where(
(x =>
(x.ID == packageId)
|| (x.Parent != null && x.Parent.ID == packageId)
|| (x.Parent != null && x.Parent.Parent != null && x.Parent.Parent.ID == packageId)
).ToList();