所有
我有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吗?
答案 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();