How to map my model data (list) with another viewmodel data (list) in this case?
Here is what i have:
My json viewmodel
public class JsonViewModel
{
    public List<JsonItem> Items { get; set; } 
}
public class JsonItem
{
    public string Name { get; set; }
    public int Unit { get; set; }
    public decimal Price { get; set; }
    public IEnumerable<Item> ItemStock { get; set; } 
}
My main Model
public class Item
{
    public int ItemId { get; set; }
    public string Name { get; set; }
    public int QuantityInPack { get; set; }
    public int Quantity { get; set; }
    public decimal Price { get; set; }
    public bool IsHidden { get; set; }
}
which should be mapped in this way:
Item.QuantityInPack = JsonItem.Unit Item.Price = JsonItem.Price where Item.Name = JsonItem.Name
Controller
public ActionResult Index()
{
    // 1. Perform HTTP request to retrieve the JSON.
    var webClient = new WebClient();
    string rawJson = webClient.DownloadString("http://my_json_data");
    // 2. Parse the JSON.
    var jsonRootObject = JsonConvert.DeserializeObject<JsonViewModel>(rawJson);
    // 3. Map to viewmodel
    var viewModel = new JsonViewModel
    {
        Items = jsonRootObject.Items.Select(i => new JsonItem
        {
            Name = i.Name,
                    Unit = i.Unit,
                    Price = i.Price
        }).ToList()
    };
    /// var TestItem = db.Items.ToList();
    /// TestItem.QuantityInPack = JsonItem.Unit
    /// TestItem.Price = JsonItem.Price
    ///     where Item.Name = JsonItem.Name
    ///
    /// (I know it's a bad, but I wanted to explain what I mean)
    /// Here i should map data in some way
    /// 
    ///
    // 4. Return mapped model to view
    return View( TestItem??? );
}
                If i understood right, you want to synchronize JsonViewModel with main model and return synchronized main model to view:
public ActionResult Index()
{
    ...
    var itemList = db.Items.ToList();
    if (jsonRootObject.Items != null)
    {
        jsonRootObject.Items.ForEach(i =>
        {
            var item = itemList.FirstOrDefault(p => p.Name = i.Name);
            if (item != null)
            {
                item.QuantityInPack = i.Unit;
                item.Price = i.Price;
            }
        });
    }
    return View(itemList);
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With