the problem in short
we have a lambda expression used in the Where clause, which is not returning the \"expected\" result.
quick summary
You are checking Parent
properties for null in your delegate. The same should work with lambda expressions too.
List analysisObjects = analysisObjectRepository
.FindAll()
.Where(x =>
(x.ID == packageId) ||
(x.Parent != null &&
(x.Parent.ID == packageId ||
(x.Parent.Parent != null && x.Parent.Parent.ID == packageId)))
.ToList();