Did you try: var query = from thirdParty in Session.Query<ThirdParty>() where Assignments.Any(assignment => assignment .EndDate == null ) select thirdParty;
Depends on whether NHibernate LINQ provider supports Any() like this. Not sure about it. Check also the QueryOver API. Feels a lot like LINQ (when called using methods not LINQ syntax). They have WhereRestrictionOn() method, you may use it to add IN restriction on the Assignments (passing it different QueryOver<Assignment>() query, again, not sure if that will work also). One other way is to do JOIN and only select ThirdParty, then put the query in brackets and add DISTINCT like (from ... select ...).Distinct() *Mohamed Meligy *Readify | Senior Developer M:+61 451 835006 | W: www.readify.net [image: Description: Description: Description: Description: rss_16] [image: Description: Description: Description: Description: cid:[email protected]] <http://www.linkedin.com/in/meligy> [image: Description: Description: Description: Description: cid:[email protected]] <http://twitter.com/meligy> <http://www.greatplacetowork.com.au/best/best-companies-australia.php><http://www.readify.net/AboutUs/NewsItem.aspx?id=10> On Wed, Dec 8, 2010 at 3:11 AM, Kakone <[email protected]> wrote: > Hello, > > I try to find a way to filter children collection in LINQ. I know I > can enable a filter on the session, but the filter string is native > SQL, I don't want to use this. > With Criteria, I think I can use a result transformer > (Transformers.AliasToEntityMap) to achieve this, but is there a way to > do this with the new LINQ provider ? > > For example, I've got two classes : > > public class ThirdParty : Entity > { > public virtual string FirstName { get; set; } > public virtual string LastName { get; set; } > > public virtual ThirdParty CurrentParent > { > get > { > var thirdPartyAssignment = > Assignments.FirstOrDefault(tpa => tpa.EndDate == null); > return thirdPartyAssignment == null ? null : > thirdPartyAssignment.ThirdParty; > } > } > > public virtual IEnumerable<ThirdPartyAssignment> Assignments > { get; set; } > } > > public class ThirdPartyAssignment : Entity > { > public virtual ThirdParty ThirdParty { get; set; } > public virtual ThirdParty Parent { get; set; } > public virtual DateTime? EndDate { get; set; } > } > > Sometimes, I want all the ThirdParties with all the Assignments (in > this case, session.Query<ThirdParty>() works well). Other times, I > want the ThirdParties with only the Assignments where EndDate is null. > I didn't succeed to do this with the LINQ provider. > > > Cordially, > Kakone. > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<nhusers%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. > > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.
