Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用嵌套的expandoObjects创建BSON文档,其中一个是已转换的字典_C#_Json_Mongodb_Bson - Fatal编程技术网

C# 如何使用嵌套的expandoObjects创建BSON文档,其中一个是已转换的字典

C# 如何使用嵌套的expandoObjects创建BSON文档,其中一个是已转换的字典,c#,json,mongodb,bson,C#,Json,Mongodb,Bson,我有一个expandoObject d,我想迭代一个字典,获取它的键和值来创建一个新对象,{key:value,key:value},然后将这个新对象分配给d,当然最后将它序列化为bsonDocument进行插入 如果简单地使用字典并执行.toArray(),我不会得到mongoDB序列化错误,但是如果我从新对象中创建一个新的expandObject,或者简单地将我提到的字典作为d.newObject传递,我会得到一个没有帮助的mondodb序列化错误 我该怎么做呢(1),对于BSON文档所期望

我有一个expandoObject d,我想迭代一个字典,获取它的键和值来创建一个新对象,{key:value,key:value},然后将这个新对象分配给d,当然最后将它序列化为bsonDocument进行插入

如果简单地使用字典并执行.toArray(),我不会得到mongoDB序列化错误,但是如果我从新对象中创建一个新的expandObject,或者简单地将我提到的字典作为d.newObject传递,我会得到一个没有帮助的mondodb序列化错误


我该怎么做呢(1),对于BSON文档所期望的可以序列化和不能序列化的内容,我还缺少什么呢?

与其自己用
ExpandoObject
为MongoDB编写这种动态类型功能,不如使用类似的动态ORM或ODM,MongoDB支持仍处于封闭测试阶段,但应该很快公开提供。下面是一个示例,其中Slazure Linq查询从“TestCustomers”集合返回一些文档,并且每个文档属性名称都写入控制台:

using SysSurge.Slazure.MongoDB.Linq;
using SysSurge.Slazure.Core;
using SysSurge.Slazure.Core.Linq.QueryParser;

public void EnumProperties()
{
    // Get a reference to the collection
    dynamic storage = new QueryableStorage<DynDocument>("mongodb://user:pass@example.org/MongoDBExample");
    QueryableCollection<DynDocument> collection = storage.TestCustomers;

    // Build collection query
    var queryResult = collection.Where("SignedUpForNewsletter = true and Age < 22");

    foreach (DynDocument document in queryResult)
    {
        foreach (KeyValuePair<string, IDynProperty> keyValuePair in document)
        {
            Console.WriteLine(keyValuePair.Key);
        }
    }
}
foreach (DynDocument document in queryResult)
{
    BsonDocument bsonDoc = document.Document    
    Console.WriteLine(bsonDoc["someProperty"].AsString());