2016-11-03 6 views
0

Ziemlich neu zu C# und MongoDB, ich bin this Tutorial gefolgt (die ich verstehe, ist ein wenig veraltet), aber ich arbeite durch und beheben die Abwertung. Ich kämpfe mit diesem Teil des Codes aus dem Tutorial:Web-API mit MongoDB Problem

public Product GetProduct(ObjectId id) 
    { 
     var res = Query<Product>.EQ(p=>p.Id,id); 
     return _db.GetCollection<Product>("Products").FindOne(res); 
    } 

Ich bin immer Fehler auf dieser Linie speziell var res = Query<Product>.EQ(e => e.Id, id); und habe, da es auf den ...

folgenden gezwickt
public Post GetPost(ObjectId id) 
    { 
     var res = IQueryable<Product>.Equals(p =>p.id, id); 
     return _db.GetCollection<Product>("Product").Find(res); 
    } 

Mein Problem ist, dass es den Lambda-Ausdruck mag und mir diesen Fehler cannot convert lambda expression to type object because it is not a delegate type gibt. Was ich also frage, ist folgendes ...

1.Was ist der Sinn dieses Lambda?

2.Wie kann ich das beheben?

Antwort

1

Versuchen Sie, die Builders mit Ihrem Filter zu erstellen:

var filter = Builders<Product>.Filter.Eq(x => x.Id, id); 
return _db.GetCollection<Product>("Product").Find(filter); 

Oder benutzen Sie einfach die Lambda direkt im Find() -Methode, das heißt

public Post GetPost(ObjectId id) 
{ 
    //If using FindOne() you won't need FirstOrDefault() 
    return _db.GetCollection<Product>("Product").Find(x => x.Id == id).FirstOrDefault(); 
} 
Verwandte Themen