Bueno, sinceramente, escribir consultas en C# es un poco complicado, pero siempre puedes jugar un truco.
var bsonQuery = "{'Details.a':{$elemMatch:{$elemMatch:{DeviceName : /.*Name0.*/}}}}";
var filter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(bsonQuery);
var result = col.FindSync (filter).ToList();
Estoy deserializando consultas simples de MongoDB en un BsonDocument que, a cambio, estoy pasando a FindAsync como filtro.
Al final, obtendrá el resultado deseado en resultado variable.
Nota:asumo que se ha establecido la conexión MongoDB y la variable col
contiene una referencia a la colección MongoDB.
EDITAR:consulte el siguiente enlace https://groups.google.com/forum/#!topic/mongodb-csharp/0dcoVlbFR2A. Ahora se ha confirmado que el controlador de C# no admite filtros sin nombre, por lo que debe escribir la consulta anterior utilizando Buidlers<BsonDocument>.Filter
en este momento no es compatible.
Para resumir, solo le queda una opción y es consultar como mencioné anteriormente en mi solución.