Thanks for this answer but it's not what I wanted to obtain.

If I do this :

var query = from thirdParty in Session.Query<ThirdParty>() where
Assignments.Any(assignment => assignment .EndDate == null )
select thirdParty;

The Assignments collection will be filled entirely. In some cases, I
would like that the Assignments collection contain only the assignment
where EndDate == null. It's not necessary to get all the records of
the child collection because I want only the last assignment. I don't
know how I can do this in LINQ.

On 8 déc, 00:52, Mohamed Meligy <[email protected]> wrote:
> 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.- Masquer le texte des messages 
> >précédents -
>
> - Afficher le texte des messages précédents -

-- 
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.

Reply via email to