6
Considerate le seguenti strutturefortemente tipizzato interrogazione sul campo nidificato utilizzando MongoDB C conducente # 2.2
public class Parent
{
public ObjectId Id { get; set; }
public IEnumerable<Child> Children { get; set; }
}
public class Child
{
public string Value { get; set; }
}
vorrei trovare tutti i genitori oggetto i cui valori figli sono un superset di un array cioè
var parents = new List<Parent>();
var values = new[] { "A", "B", "C" };
parents.Where(x => !values.Except(x.Children.Select(y => y.Value)).Any());
o
{ "Children.Value": { $all: ["A", "B", "C"] } }
Mi piacerebbe farlo in modo dattiloscritto ma il traduttore predicato non supporta It umerable.Select quindi questo non funzionerà:
Builders<Parent>.Filter.All(x => x.Children.Select(y => y.Value), values);
Attualmente sto usando questa soluzione:
var filters = values.Select(x => Builders<Parent>.Filter.Where(y => y.Children.Any(z => z.Value == x)));
Builders<Parent>.Filter.And(filters);
Esiste un modo migliore senza utilizzare una stringa di nome di campo magia?
Avete mai capito questo? Devo fare qualcosa di simile ... –