2016-12-18 23 views
0

模型是每個和相關的數據,MVC 5 asp.net裏面的foreach從其他表

ModelA: 

public int AId  {get;set;} 
public float Amount {get;set;} 

ModelB: 
    public int BId    {get;set;} 
    public float RequestAmount {get;set;} 
    public int AId    {get;set;} 
    public virtual ModelA ModelA {get;set;} 
現在,當我要列出MODELA

,在ModelB有許多項目相關的MODELA 我想計算RequestAmount和列表中MODELA的foreach列表:

public ActionResult Index() 
    { 
     var modelA = db.ModelA.Include(c => c.ModelB); 
     return View(modelA.ToList()); 
    } 

這將是視圖:

@model IEnumerable<test.Models.ModelA> 


@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.AId) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Amount) 
     </td> 
     <td> 
      **Here need to calcut or SUM value from ModelB only related to this** 
     </td> 
    </tr> 

} 
+0

你到底想要做什麼?你被困在哪裏? – Prajwal

+0

我需要從ModelB總結價值,並顯示在ModelA –

+0

@Prajwal的每個foreach行任何想法 –

回答

1

您可以加入集合並對結果進行分組,然後執行Sum操作,將結果投影到新的視圖模型。

因此,創建視圖模型第一

public class MyViewModel 
{ 
    public int AId { set;get;} 
    public float Total { set;get;} 
} 

現在,在你的操作方法,

var data = (from a in db.ModelAs 
      join b in db.ModelBs on a.AId equals b.AId 
       group b by a.AId into g 
    select new MyViewModel { AId = g.Key, Total = g.Select(f=>f.RequestAmount).Sum() }) 

.ToList(); 

當然,現在你的看法是強類型到MyViewModel

@model List<MyViewModel> 
@foreach(var item in Model) 
{ 
    <p>@item.AId</p> 
    <p>@item.Total </p> 
} 
列表

另一種選擇是,您可以將ModelB的集合添加到ModelA類。

public class ModelA 
{ 
    public int AId  {get;set;} 
    public float Amount {get;set;} 
    public IEnumerable<ModelB> ModelBs {set;get;} 
} 

並使用Sum擴展方法。

@model IEnumerable<test.Models.ModelA> 
@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.AId) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Amount) 
     </td> 
     <td> 
      @item.ModelBs.Sum(x=>x.RequestAmount) 
     </td> 
    </tr> 

} 
+0

是'.Sum'擴展可用於非Enumerable類型嗎? –

+1

固定。抱歉。感謝您收到@RajshekarReddy – Shyju