无法将MongoDB.Bson.ObjectId类型的对象强制转换为MongoDB.Bson.BsonValue类型

时间:2015-10-28 11:05:41

标签: c# mongodb casting bson objectid

所有

我有IEnumerable名为ObjectsList,它基本上包含一堆MongoDB.Bson.ObjectId对象。我需要将名为ObjectsList的整个IEnumerable转换为名为BsonValueList的IEnumerable

           IEnumerable<Object> ObjectsList =     DBConnection.database.GetCollection<ELLCsLog>("FMS_TM_MST_Logs")
                            .FindOneByIdAs<ELLCsInterfaceLog>(ObjectId.Parse(logIdArg.ToString())).logEventsIdList;

           IEnumerable<BsonValue> BsonValueList = ObjectsList.Cast<BsonValue>();

不幸的是,该转换会产生以下错误:

Unable to cast object of type MongoDB.Bson.ObjectId to type     MongoDB.Bson.BsonValue  System.SystemException {System.InvalidCastException}

有人可以展示适当的代码来投射前面提到的IEnumerable吗?

1 个答案:

答案 0 :(得分:1)

一般情况下,如果你想将一个ObjectIds转换为BsonValues,你需要做一个项目和这样的显式转换:

ObjectsList.Select(v => (BsonValue)v).ToList();

我认为这是由于in the answers to this question解释的原因。

如果您有一个对象列表而不是ObjectId,我发现您需要为ObjectId添加一个额外的强制转换 - 否则您会遇到与您尝试过的代码相同的错误。

ObjectsList.Select(v => (BsonValue)(ObjectId)v).ToList();