私は3つのテーブルを持っています:
PackageName:PackageNameID、PackageName
食品:FoodID、Food
PackageContent:PackageContentID、PackageNameID、FoodID、Qty
私がやろうとしているのは、次のようなものを表示することです。
PackageName(Food = Qty、Food = Qty)編集| 詳細| 消去
A(玉ねぎ= 4、ピーマン= 3)編集| 詳細| 消去
- B(Rolls = 2、Onions = 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'に暗黙的に変換できません
さらに、選択行が正しくありません....食品の名前(「Food」テーブルの「Food」)とこの食品の数量(「PackageContent」の「Qty」)の両方を割り当てる必要があります。 「テーブル」をモデルの「FoodItems」リストに追加します。どうすればよいですか?
どうもありがとう!!