2016-03-20 28 views
0

Mongo sürücüsünü kullanarak karmaşık sorgu oluşturmayı düşünüyorum. Bu benim sorgu:C# mongo sürücüsü ile sorgu oluşturma

var builder = Builders<MongoNavFilter>.Filter; 
var query = builder.Where(x => x.Link == link && x.SubLink == subLink); 
if (some statement) 
{ 
    var finalExpression = ... 
    query = query & Builders<MongoNavFilter>.Filter.Where(finalExpression); 
} 
if (onsale) 
    query = query & Builders<MongoNavFilter>.Filter.Where(x => !(x.Promo == null && x.Promo == string.Empty)); 

var filters = _db.GetCollection<MongoNavFilter>("NavFilters"). 
        Find(query).ToList(); 

bu kod IQueryableEF ile iyi çalışıyor, ama mongo driver ile doğru sorgu inşa edemeyiz. Herkes bana neyi yanlış yaptığımı söyleyebilir miydi?

+0

örnek MongoDB belgelerle Yazınızı güncelleyin sizinki yerine aşağıdaki kodu deneyin ve bir fark yaratacak olmadığına bakabilir misiniz !(x.Promo == null && x.Promo == string.Empty)

ait mongodb sürücü çeviri ile bir sorun olabilir . Ayrıca "doğru sorguyu oluşturamıyor" ile ne demek istiyorsun? Hangi hatayı alıyorsun? – Saleem

cevap

1

Sorun var ise, finalExpression'un ne olduğunu bilmek yardımcı olacaktır. Bence, sen

var builder = Builders<MongoNavFilter>.Filter; 
var query = builder.Eq(x => x.Link, link) & builder.Eq(x=> x.SubLink, subLink); 
if (some statement) 
{ 
    var finalExpression = ... // write this using the same syntax 
    query = query & filter; 
} 
if (onsale) 
    query = query & builder.Ne(x=>x.Promo, null) & builder.Ne(x=> x. Promo, string.Empty); 

var filters = _db.GetCollection<MongoNavFilter>("NavFilters"). 
       Find(query).ToList(); 
+1

Zaman ayırdığınız için çok teşekkürler! –