0

私は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」リストに追加します。どうすればよいですか?

どうもありがとう!!

4

1 に答える 1

0

競合する型の型パラメーターは表示Listされませんが、その部分に関係していると確信しています

FoodItems = f.Food.ToList()

FoodItemsはビュー モデルの補助クラスでありList<FoodItem>、エンティティ オブジェクトのコレクションです。FoodItemf.FoodFood

このようなものはおそらくうまくいきます:

FoodItems = f.Food.Select(fi => new FoodItem 
                                { 
                                   FoodName = fi.Name,
                                   Quantity = fi.Quantity
                                })

あなたのエンティティクラスがどのように見えるかを推測する必要がありますが。

于 2012-10-04T21:18:26.620 に答える