Это проблема ковариации . List
не является ковариантным, поэтому между List
и List
нет неявного преобразования.
С другой стороны, начиная с C # 4, IEnumerable
теперь поддерживает ковариацию, поэтому это работает:
var value = Enumerable.Empty();
Bar(value);
var value = new List().AsEnumerable();
Bar(value);
var value = new List();
Bar((IEnumerable)value);
Вы можете проанализировать строку запроса, используя com.mongodb.BasicDBObject#parse(java.lang.String)
, чтобы получить свой запрос к DBObject
. Затем вы можете создать свой запрос, используя AdvancedDatastore#createQuery(Class<T>, com.mongodb.DBObject)
, после чего у вас будет «нормальный» Query
, который вы можете выполнить, как и любой другой Query
. Ссылка Datastore
, которая у вас лежит, это -a AdvancedDatastore
, поэтому вам нужно только привести эту ссылку, чтобы иметь доступ к этому методу.
В моей дорожной карте изложено гораздо более понятное в 2.0, но я яростно заканчиваю разработку 1.5, чтобы сосредоточиться на 2.0.