如何使用其他2个模型类创建List <viewmodel>? MVC ASP.NET

时间:2016-02-25 15:06:39

标签: c# json asp.net-mvc mapping

如何创建List&lt; ViewModel&gt;还有其他两类模特?

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; }
    }

如上所示 - 两个类都有属性Code - it的连接器。

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);
            }

很难解释。我希望你知道我的意思。

1 个答案:

答案 0 :(得分:0)

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

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();

这将以ItemViewModel方式返回leftOuterJoin列表。

相关问题