Web API with MongoDB issue

本文关键字:issue MongoDB with API Web | 更新日期: 2023-09-27 18:16:14

对c#和MongoDB来说很新,我遵循这个教程(我知道它有点过时),但是我正在通过它和修复弃用。我正在努力从教程的这部分代码:

 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。这个的意义是什么?

2。我怎么修理它?

Web API with MongoDB issue

尝试使用生成器创建您的过滤器:

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

或者直接在Find()方法中使用lambda,即

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