C# 在类中填充列表

C# 在类中填充列表,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个类,我用它来查看用户列表 public class OrderVM { public OrderVM() { } public OrderVM(OrderDTO row) { Id = row.Id; ClientId = row.ClientId; OrderDate = row.OrderDate; } public in

我有一个类,我用它来查看用户列表

public class OrderVM
    {
        public OrderVM() { }

        public OrderVM(OrderDTO row)
        {
            Id = row.Id;
            ClientId = row.ClientId;
            OrderDate = row.OrderDate;
        }

        public int Id { get; set; }
        public string ClientId { get; set; }
        public string OrderDate { get; set; }
        public string ClientName { get; set; }
        public string ClientSurname { get; set; }

    }
结果我希望在我的观点中看到这一点:

  Name    Surname      Brand          Mark
-------   --------  ------------    --------
Alexey     Petrov      Jamis         Trail
                       Scott         SPark
                     Mongoose        Expert
我决定在OrderVM类中添加一个列表,这样每个客户都会有一个购买产品的列表:

    public class OrderVM
        {
            public OrderVM() { }

            public OrderVM(OrderDTO row)
            {
                Id = row.Id;
                ClientId = row.ClientId;
                OrderDate = row.OrderDate;
                Bicycles = new List<BicycleVM>();
            }

            public int Id { get; set; }
            public string ClientId { get; set; }
            public string OrderDate { get; set; }
            public string ClientName { get; set; }
            public string ClientSurname { get; set; }

            public List<BicycleVM> Bicycles { get; set; }

        }

public class BicycleVM
{
        public int Id { get; set; }
        public string Category { get; set; }
        public int CategoryId { get; set; }
        public string BrandName { get; set; }
        public string Mark { get; set; }
        public int Year { get; set; }
        public string Color { get; set; }
        public decimal WheelSize { get; set; }
        public string Frame { get; set; }
        public int Speeds { get; set; }
        public string Brake { get; set; }
        public string BicycleType { get; set; }
        public decimal Weight { get; set; }
        public decimal Price { get; set; }
        public string PriceFormatted { get; set; }
        [DisplayName("Image")]
        public string ImageName { get; set; }

        public IEnumerable<SelectListItem> Categories { get; set; }
        public IEnumerable<string> GalleryImages { get; set; }
}
在列表中,有4项具有值:

如果我这样做:

OrderVM order = new OrderVM();
order.Bicycles.AddRange( new List<BicycleVM>(orderedItems));
附:我读过这篇文章
而且不确定如何正确地将这些信息用于我的案例

我认为如果您在运行错误所在行之前检查
order.Bicycles
,您会发现该行将为空,因为您使用空构造函数(
new OrderVM())创建了
OrderVM
对象

只有接受
OrderDTO
作为输入的构造函数才会创建新的自行车列表。因此,当您使用另一个(空)构造函数创建对象时,
Bicycles=newlist()从不执行,自行车列表保持为空

并且不能在空对象上执行方法,例如
AddRange()
,这就是为什么会出现异常

为了安全起见,您需要运行
Bicycles=newlist()

例如:

public class OrderVM
{
    public OrderVM() 
   { 
        Bicycles = new List<BicycleVM>(); //add this line
    }

    public OrderVM(OrderDTO row)
    {
        Id = row.Id;
        ClientId = row.ClientId;
        OrderDate = row.OrderDate;
        Bicycles = new List<BicycleVM>();
    }
公共类OrderVM
{
公共秩序虚拟机()
{ 
Bicycles=new List();//添加此行
}
public OrderVM(OrderDTO行)
{
Id=row.Id;
ClientId=row.ClientId;
OrderDate=row.OrderDate;
自行车=新列表();
}

Bicycles=new List();
只在构造函数
OrderVM(OrderDTO行)
中使用构造函数
OrderVM()
谢谢你的回复。我已经编辑了主要帖子-你能检查一下是否一切正常吗?你编辑的版本不符合我的建议。但是无论如何,没有必要用更正的代码更新你的问题…如果代码没有显示问题,那么问题和答案就没有意义了。只要用你自己的代码修复它,然后让我知道它是否有用。你需要更新你的OrderVM对象,而不是bicycle对象…仔细阅读我写的:)我读了:)你能编辑代码吗?如果你有时间,它应该是什么样子:)?你明白我所说的“空构造函数”是什么意思吗你需要在OrderVM对象中添加一行,仅此而已。我用一个更详细的示例更新了我的答案。
orderedItems.ForEach(x => x.Categories = " ");
orderedItems.ForEach(x => x.Category = " ");
orderedItems.ForEach(x => x.GalleryImages = " ");
orderedItems.ForEach(x => x.PriceFormatted = " ");
public class OrderVM
{
    public OrderVM() 
   { 
        Bicycles = new List<BicycleVM>(); //add this line
    }

    public OrderVM(OrderDTO row)
    {
        Id = row.Id;
        ClientId = row.ClientId;
        OrderDate = row.OrderDate;
        Bicycles = new List<BicycleVM>();
    }