我如何创建一个 List<ViewModel> 以及另外 2 个 类 模型? MVC ASP.NET

How can I create a List<ViewModel> with 2 other classes of models? MVC ASP.NET

如何创建一个包含另外 2 个 类 模型的 List

1 个型号:

public class Item
{
    public int ItemId { get; set; }
    public string Code { get; set; }
    public int QuantityInBase { get; set; }
    public bool IsHidden { get; set; }
}

2 型号:

public class JsonViewModel
    {
        public List<JsonItem> Items { get; set; }
    }

    public class JsonItem
    {
        public string Name { get; set; }
        public string Code { get; set; }
        public double Price { get; set; }
    }

正如您在上面看到的那样 - 类 都有 属性 代码 - 它是连接器。

3 个模型(目标 ViewModel)

public class ItemViewModel
    {
        public int ItemId { get; set; }
        public string Code { get; set; }
        public string Name { get; set; }
        public int QuantityInBase { get; set; }
        public decimal Price { get; set; }
        public bool IsHidden { get; set; }
    }

    public class ItemListViewModel
    {
        public List<ItemViewModel> ItemViewList;
    }

这就是我已经在控制器中尝试做的事情。

      public ActionResult ItemsListPartial(JsonViewModel webSocketData)
    //webSocketData has values from webservice
            {
                ItemListViewModel model = new ItemListViewModel();
                var data = db.Items.ToList();

                foreach (var obj in data)
                {
                    model.ItemViewList = ...
                    // here, somehow i have to merge !var data! with                      
                    // !webSocketData! = and it has to be one 
                    // list of ItemListViewModel
                }

                return View("_ItemsListPartial", model);
            }

很难解释。我希望你明白我的意思。

如果我的理解正确,您可以在 code 属性 上创建 linq join 查询。 类似于:

var rez= (from p in data
          join q in webSocketData.Items on p.Code equals q.Code
          select new ItemViewModel
          { 
            ItemId = p.ItemId,
            Code = p.Code,
            Name = q.Name,
            QuantityInBase = p.QuantityInBase ,
            Price = q.Price,
            IsHidden = p.IsHidden
          }).ToList();

这将以 leftOuterJoin 的方式 return 列出 ItemViewModel