如何创建List< ViewModel>还有其他两类模特?
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);
}
很难解释。我希望你知道我的意思。
答案 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
列表。