2016-11-03 44 views
0

對於C#和MongoDB來說很新鮮,我正在關注this教程(我瞭解它有點過時),但是我正在通過它來修復棄用。我從教程的代碼,這部分掙扎:帶有MongoDB問題的Web API

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

我是在這條線得到錯誤專門var res = Query<Product>.EQ(e => e.Id, id);並有因爲它調整了以下...

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

我的問題是它確實喜歡lambda表達式,並給我這個錯誤cannot convert lambda expression to type object because it is not a delegate type。所以我問的是以下...

1.這個lambda的重點是什麼?

2.我該如何解決?

回答

1

嘗試使用建築商來創建過濾器:

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

或者只是使用拉姆達直接在find()方法,即

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