0

在最新版本的 C# 驱动程序中,10gen 似乎已经转移到他们的 .find() 方法的类型更丰富的版本。似乎 MongoCollection.Find(IMongoQuery) 已被弃用,取而代之的是 MongoCollection.FindAs(Type, IMongoQuery)。这很好(尽管我没有看到文档中任何地方提到的弃用);但是,MongoCursor 不再包含 .ToList() 方法。为了解决这些缺失的方法,我尝试使用 MongoCursor.IEnumerableGetEnumerator(),但我的 IDE 抱怨这不是一个有效的方法。

为了简化我的问题,下面是我正在做的代码段,新驱动程序是如何完成的?

var queryResult = collection.Find(Query.And(largeQueryList[i])).ToList();
try { result = queryResult.Sum(w => w[valueField].ToDouble()); }
4

1 回答 1

0

我不确定您上次更新驱动程序是什么时候,因为看起来该方法在MongoCollection课堂上已经有很长一段时间没有出现了。它存在于泛型MongoCollection<type>类中。驱动程序需要知道要反序列化的类型,因此您需要指明文档类型。这可以通过一个通用的 BsonDocument:

MongoCollection<BsonDocument>

或者,如果你有一个特定的类型,你可以在那里替换它。

如果您不想使用通用版本,则需要使用FindAs或其中一种等效方法来指示Type.

一旦你这样做,你会看到它ToList应该可用。

于 2013-09-04T16:51:28.733 回答