2016-04-30 70 views
0

我试图更新Mongo中的一个对象,其中包含一个对象数组。其他领域工作正常,但我不知道如何告诉它在更新期间简单地设置数组。更新数组

var update = new UpdateDefinitionBuilder<MyPost>() 
    .Set(m => m.Title, "Some Title") //works fine 
    .Set(m => m.Contact, myPost.Contacts.ToArray()); //throws compiler error 

编译器吐出:

错误CS1660:无法转换lambda表达式键入 'FieldDefinition < MyPost,联系[]>',因为它不是委托 类型。

+1

是'Contact'属性的阵列? –

+0

对不起,我应该提到这一点。联系是一个数组,是的。 – Dusda

回答

0

我意识到这是旧的,但它有一个类似的问题,它花了一些搜索拼凑在一起的答案。

var bsonArray = new BsonArray(BsonDocumentWrapper.CreateMultiple(typeof(Contact), myPost.Contacts)); 
var update = new UpdateDefinitionBuilder<MyPost>() 
    .Set(m => m.Title, "Some Title") 
    .Set(m => m.Contacts, bsonArray); 

只是注意,如果你不定义类型CreateMultiple(typeof(Contact),..,现场"_t" : "SomeNamespace.Contact"被添加到阵列中的每个元素在db

+0

我有同样的问题,但我不明白你的解决方案, http://stackoverflow.com/questions/39975324/update-an-embedded-field-using-mongodb-and-c-sharp/39993822#39993822 – Juste3alfaz