MongoDB C# 驱动程序 LINQ 查询语法是否缺少异步方法?

Ass*_*ast 2 c# linq mongodb

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()在编译时存在,但它在运行时会给出和错误。

Cra*_*son 9

支持 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