【问题标题】:How to add data into Collection list in c# [duplicate]如何在c#中将数据添加到集合列表中[重复]
【发布时间】:2016-10-12 05:57:07
【问题描述】:

我正在尝试从 SQL 数据库中获取数据,我得到了 5 条记录。但是从那 5 个记录列表中,我想分别创建两个列表。我正在尝试执行以下操作:

public class ParentModel
{       
     public List<Model1> Child1 { get; set; }
     public List<Model2> Chil2{ get; set; }
}

我的另外两个模型是:

public class Model1
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int? GroupNumber { get; set; }
    public string Description { get; set; }
}

public class Model2
{
     public string Name { get; set; }
     public int? Number { get; set; }
}

我想填充 ParentModel 中定义的两个列表 我的服务,但它抛出空异常。如何将数据添加到我的列表中?

 public  ParentModel GetALL(int ID)
 {
    ParentModel objModel = new ParentModel();

    // here I fetch data from database using Iqueryable:
    IQueryable<Products> List = this._products.GetAll();
    var NamesList = List .Where(m => m.Id == ID).ToList();

    // Here I need to add data to my list. Also if it can be
    // followed in a best possible way, Please do share it with me.

    foreach (var obj in NamesList)
    {
        objModel.Child1.Add( new   Model1
        {
            Id=obj.Id, // Here it throws error of null exception
            Name = obj.Name,
            GroupNumber = obj.GroupNumber,
            Description =obj.Description
        }); 

        // the other list I would like to populate at the same time is
         objModel.Chil2.Add(new Model2
        {
            Name = obj.Name,
            Number = obj.Number
        });
    }
}

【问题讨论】:

    标签: c# entity-framework c#-4.0 entity-framework-4


    【解决方案1】:

    有几种方法。最简单的方法是添加构造函数

    public class ParentModel
        {
    
            public List<Model1> Child1 { get; set; }
    
            public List<Model2> Chil2 { get; set; }
    
            public ParentModel()
            {
                Child1 = new List<Model1>();
                Chil2 = new List<Model2>();
            }
    
        }
    

    【讨论】:

    • 太棒了。它工作正常。您能否解释一下为什么需要使用 new 创建这些属性,或者为什么需要首先为属性分配内存。据我所知,我们可以使用类的任何属性,而无需使用带有构造函数的 new。
    • 正确,返回正确的属性。但是 child1 和 chil2 在第一次初始化时都是 NULL,你不能在一个 null 对象上调用 .Add。
    • 它们是列表对象,{get;set} 不会初始化列表。
    猜你喜欢
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2019-05-21
    • 2011-01-23
    相关资源
    最近更新 更多