C# 如何创建列表<;ViewModel>;还有其他两类车型?MVC ASP.NET

C# 如何创建列表<;ViewModel>;还有其他两类车型?MVC ASP.NET,c#,json,asp.net-mvc,mapping,C#,Json,Asp.net Mvc,Mapping,如何使用其他两类模型创建列表 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 { publi

如何使用其他两类模型创建列表

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
属性上创建
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
的方式返回
ItemViewModel
列表。

如果我理解正确,您可以在
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
的方式返回
ItemViewModel
列表。

我有一个错误:“join子句中的一个表达式的类型不正确。调用'join'时类型推断失败。”确定后,我改为:“在webSocketData.Items中加入q”我现在要测试。brbOk很好用!但是,如何在视图上显示此列表?“返回视图(“_itemslitpartial”,rez);”。在视图中添加了:“@model List”,但我仍然不能使用:“@Html.DisplayNameFor(model=>model.Code)”@DiPix,因为您有一个作为模型的列表。因此,您必须遍历所有项。类似于:
@(模型中的foreach var item)Html.DisplayNameFor(item.code)
@DiPix,如果您使用的是Visual Studio,可以让它创建局部视图。单击addView,将显示一个模板,在那里选择一个模型(对您来说,它是
ItemViewModel
),检查PartialView并从那里的模板中选择列表。我有一个错误:“join子句中的一个表达式的类型不正确。调用“join”时类型推断失败。”确定我更改为:“在webSocketData.Items中加入q”我现在就测试。brbOk工作正常!但是如何在我的视图中显示此列表?”返回视图(“_itemslitpartial”,rez);,并在视图中添加了:“@model List”,但我仍然不能使用:“@Html.DisplayNameFor(model=>model.Code)”@DiPix,因为您有一个作为模型的列表。因此您必须遍历所有项。类似于:@(模型中的每个变量项)Html.DisplayNameFor(item.Code)@DiPix,如果您使用的是Visual Studio,您可以让它创建局部视图。单击addView,将显示一个模板,在那里选择一个模型(对于您来说,它是
ItemViewModel
),检查局部视图并从那里的模板中选择列表。
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();