如何用c#类插入带有子文档数组的文档

本文关键字:文档 数组 何用 插入 | 更新日期: 2023-09-27 17:51:05

我是mongodb和c#驱动的业余爱好者。我尝试按类插入带有子文档数组的文档。我的准则是:这是我的类:

    public class Entity
    {
        public string name { get; set; }
        public string family { get; set; }
        public List<sc> score { get; set; }
    }
    public class sc
    {
        public int Math{ get; set; }
        public int literature{ get; set; }
    }

这是填充字段和插入文档的代码:

        var en = new Entity();
        var sc1 = new sc();
        var sc2 = new sc();
        sc1.Math= 14;
        sc1.literature= 15;
        sc2.Math= 16;
        sc2.literature= 19;
        en.score[0] = sc1;
        en.score[1] = sc2;
        en.name = "Esi";
        en.family = "Moja";
        collection.Insert(en);

但是当我运行它时,我得到了这个错误:

Object reference not set to an instance of an object.

如何解决这个问题?

如何用c#类插入带有子文档数组的文档

这是因为您没有初始化列表。试试这个:

var en = new Entity();
var sc1 = new sc();
var sc2 = new sc();
sc1.Math= 14;
sc1.literature= 15;
sc2.Math= 16;
sc2.literature= 19;
en.score = new List<sc>(); // The missing line
en.score.Add(sc1); // How you add elements 
en.score.Add(sc2); // in your list
en.name = "Esi";
en.family = "Moja";
collection.Insert(en);

为了更好的可读性,你也可以使用对象初始化器:

var en = new Entity()
         {
             name = "Esi",
             family = "Moja",
             score = new List<sc>
             {
                 new sc()
                 {
                     Math = 14,
                     Literature = 15
                 },
                 new sc()
                 {
                     Math = 16,
                     Literature = 19
                 }
             }
         }
collection.Insert(en);

你需要新建你的列表,因为它现在是空的

 en.score=new List<sc>();