LINQ方法语法确实有这样的异步方法:
var peter = await peopleCollection.Find(x => x.Name == "Peter").FirstOrDefaultAsync();
Run Code Online (Sandbox Code Playgroud)
但它在查询语法中不存在,如下所示:
var peter = await (from x in collection.AsQueryable()
where x.Name == "Peter"
select x).FirstOrDefaultAsync(); //COMPILETIME ERROR
Run Code Online (Sandbox Code Playgroud)
真的是这样吗?
如果你想测试,一个重要的注意事项:如果你已经引用了实体框架库并使用了 System.Data.Entity; 语句,则FirstOrDefaultAsync()在编译时存在,但它在运行时会给出和错误。
支持 FirstOrDefaultAsync(和许多其他)。我相信您的问题可能是您没有包括 MongoDB.Driver.Linq,其中定义了扩展方法。
测试在这里:https : //github.com/mongodb/mongo-csharp-driver/blob/master/tests/MongoDB.Driver.Tests/Linq/MongoQueryableTests.cs#L309。
代码在这里:https : //github.com/mongodb/mongo-csharp-driver/blob/master/src/MongoDB.Driver/Linq/MongoQueryable.cs