我有三张桌子:
PackageName:PackageNameID,PackageName
食物:FoodID,食物
PackageContent:PackageContentID,PackageNameID,FoodID,Qty
我要做的是显示以下内容:
PackageName(食物=数量,食物=数量)编辑|细节|删除
A(洋葱= 4,辣椒= 3)编辑|细节|删除
- B(Rolls = 2,洋葱= 2)编辑|细节|删除
这是我的观点模型:
public class PackageViewModel
{
public int ID { set;get;}
public string Name { set;get;}
public List<FoodItem> FoodItems { set;get;}
public PackageViewModel()
{
FoodItems=new List<FoodItem>();
}
}
public class FoodItem
{
public string FoodName { set;get;}
public int Quantity { set;get;}
}
以下是我的观点:
@model List<PackageViewModel>
@foreach(var item in Model)
{
<tr>
<td>@item.Name</td>
<td>
foreach(var food in item.FoodItems)
{
@food.FoodName - @food.Quantity
}
</td>
<td>
@Html.ActionLink("Edit","Edit",new {@id=item.ID})
</td>
</tr>
}
这是我在控制器中使用的查询:
List< PackageViewModel > listVM=new List< PackageViewModel >();
listVM =
from pn in db.PackageNames
from pc in db.PackageContents
.Where(p => p.PackageNameID == pn.PackageNameID).DefaultIfEmpty()
from f in db.Foods
.Where(f => f.FoodID == pc.FoodID).DefaultIfEmpty()
select new PackageViewModel { PackageNameID = pc.PackageNameID, PackageName = pn.PackageName, FoodItems = f.Food.ToList() };
return View(listVM);
但是,我收到以下错误: 无法将类型'System.Collections.Generic.List'隐式转换为'System.Collections.Generic.List'
此外,选择线无论如何......我需要指定食物的名称(“食物”表中的“食物”)和食物的数量(“数量”来自“PackageContent”表)到模型中的“FoodItems”列表。我该怎么做?
非常感谢!!
答案 0 :(得分:0)
您没有显示有冲突的List
类型的类型参数,但我很确定它与部件有关
FoodItems = f.Food.ToList()
FoodItems
是List<FoodItem>
,FoodItem
是视图模型中的辅助类,而f.Food
是Food
实体对象的集合。
这样的事可能有用:
FoodItems = f.Food.Select(fi => new FoodItem
{
FoodName = fi.Name,
Quantity = fi.Quantity
})
虽然我必须猜测你的实体类是什么样的。