2012-10-04 69 views
0

彙總數據我有三個表:與查詢ASP MVC 3控制器

PackageName: PackageNameID,PackageName

Food: FoodID,Food

PackageContent: PackageContentID, PackageNameID, FoodID, Qty

我想要做的是顯示這樣的事情:

  • PackageName (Food=Qty, Food=Qty) Edit | Details | Delete

  • A (Onions=4,Peppers=3) Edit | Details | Delete

  • B (Rolls=2,Onions=2) Edit | Details | Delete

這裏是我的視圖模型:

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」表格中的「Qty」)到模型中的「FoodItems」列表。我該怎麼做呢?

非常感謝!

回答

0

你沒有表現衝突List類型的類型參數,但我敢肯定它有與部分

FoodItems = f.Food.ToList() 

FoodItems做是List<FoodItem>FoodItem是一個輔助類的查看模式,而f.FoodFood實體對象的集合。

像這樣的東西可能工作:

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

雖然我猜你的實體類是什麼樣子。

+0

感謝您的回覆。這擺脫了錯誤,但現在我有兩個新的: 錯誤'char'不包含'Name'的定義並且沒有擴展方法'Name'接受類型'char'的第一個參數可以(缺少使用指令或程序集引用?) 錯誤'char'不包含'Quantity'的定義並且沒有接受'char'類型的第一個參數的擴展方法'Quantity'可以被發現(你是否缺少使用指令或程序集引用?) **謝謝** –

+0

那麼,你的對象可能有其他屬性,但正如我所說,我必須猜測一下,因爲我不能看到你的班級模型。 –