Prøv dette i stedet
Query.ElemMatch("Children", Query.And(Query.EQ("StatusId",1), Query.EQ("Active",true),Query.LT("SubChild.ExpiresOn",DateTime.UtcNow)));
Undrer du dig over, hvorfor denne forespørgsel på magisk vis virker? Det er tilfældet (StatusId
vs StatusID
). JavaScript skelner mellem store og små bogstaver.
Du kan eliminere dette problem ved at bruge stærkt indtastede Linq-forespørgsler, såsom:
from x in collection.AsQueryable()
where x.Children.Any(child =>
child.StatusId == 1
&& child.Active
&& child.SubChild.ExpiresOn < DateTime.UtcNow)
select x