Я только начал использовать mongodb в C#, и это здорово, однако я изо всех сил пытаюсь понять, как я мог динамически создавать запрос linq для перехода к mongodb.динамически создавая linq с mongodb
Ситуация: У меня есть файл, который имеет некоторые общие свойства filename, ectizeizeize, одно из этих свойств - это метаданные, которые представляют собой список полей со значениями. пользователь сможет динамически определять критерии поиска, поэтому я не могу жестко запросить этот запрос.
Мой объект для полноты:
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; }
}
Мой текущий код, который вручную устанавливая критерии поиска и возвращает любой актив, который имеет «привет» или «мир» в поле значения метаданных:
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"))
);
То, что я хотел бы иметь, - это динамически создавать запрос на основе выбора пользователей (пока у него пока нет, так как хотите, чтобы он работал в коде первым!)
Любая помощь будет большой.
Вы можете просто ЦЕПЬ 'Where (...)' звонки на 'IQueryable' в зависимости от критериев и LINQ будет решать их в выражение - или, [если вы хотите пойти глубже ..] (HTTPS : //www.simple-talk.com/dotnet/.net-framework/giving-clarity-to-linq-queries-by-extending-expressions/) – stuartd