Ich habe gerade angefangen mit mongodb in C# und es ist toll, aber ich habe zu kämpfen, um zu verstehen, wie ich dynamisch erstellen konnte eine linq Abfrage an mongodb übergeben.dynamisch erstellen linq mit mongodb
Situation: Ich habe eine Datei mit einigen allgemeinen Eigenschaften Dateiname, Dateigröße ect, eine dieser Eigenschaften ist Metadaten, die eine Liste von Feldern mit Werten ist. Der Benutzer wird in der Lage sein, die Suchkriterien dynamisch festzulegen, und so kann ich diese Abfrage nicht hart codieren.
Mein Objekt auf Vollständigkeit:
public class asset
{
public ObjectId Id { get; set; }
public string filename { get; set; }
public int filesize { get; set; }
public List<shortmetadata> metadata { get; set; }
}
public class shortmetadata
{
public string id { get; set; }
public string value { get; set; }
}
Mein aktueller Code, der manuell die Suchkriterien setzt und gibt einen Vermögenswert, die „Hallo“ oder „Welt“ in dem Metadaten Wertfeld hat:
MongoClient client = new MongoClient();
var db = client.GetDatabase("Test");
var collection = db.GetCollection<asset>("assets");
var assets = collection.AsQueryable().Where(i =>
i.metadata.Any(m => m.value.Contains("hello")) ||
i.metadata.Any(m => m.value.Contains("world"))
);
Was ich gerne tun könnte, ist dynamisch erstellen Sie die Abfrage auf der Grundlage der Benutzer Auswahl (noch nicht, wie es zuerst in Code arbeiten wollen!)
Jede Hilfe wäre großartig.
Sie können die Kette nur die 'Wo (...)' fordert die 'IQueryable' über die Kriterien abhängig und Linq wird sie in einen Ausdruck lösen - oder [wenn man tiefer gehen wollen ..] (https : //www.simple-talk.com/dotnet/.net-framework/giving-clarity-to-linq-queries-by-ext-expressions/) – stuartd