2014-01-10 21 views
5

是否有可能在剃刀內使用「總和」,因此您可以總結在視圖上已經進行了整合的內容。即。我的看法是這樣的:ASP.Net MVC剃刀總和和計數功能

@model IEnumerable<cb2.ViewModels.ResultsVM> 
... 
@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.Qualified) 
    </td> 
    ... 
} 

話,我想在屏幕類似於此的底部總結所有合格的:

@Model.Qualified.Sum() 

但我得到的錯誤:

'System.Collections.Generic.IEnumerable<cb2.ViewModels.ResultsVM>' does not contain a definition for 'Qualified'

我認爲在Qazor中簡單地在模型上使用Sum或Count會很容易嗎?

感謝,馬克

回答

20

我想你想:

@Model.Sum(i => i.Qualified) 

Qualified項目模型中的屬性,而不是模式本身。

+0

在ASP.NET 1.1的核心'@ Model.Sum(...)'不認可。什麼是替代方案? – nam

+0

它應該正常工作 - 用現有的代碼重新提出一個新問題來重現問題。 –

+1

我得到它的工作。我在我的ViewModel中使用了一個屬性,它是行列表,比如'myViewModel.listOfTableRows =(LINQ query).ToList()'。我正在遍歷該列表。所以,在這種情況下,我需要使用'@ Model.listOfTableRows.Sum(c => c.ColumnName)'和** not **'@ Model.Sum(...)'。但你和'musefan'的解決方案幫助我走向了正確的方向(謝謝)。 – nam

4

請記住,ModelIEnumerable<cb2.ViewModels.ResultsVM>,它不包含Qualified的屬性,但集合中的每個項目都有。所以,你可以在集合類直接調用Sum,並指定要總結,即Qualified屬性...

@Model.Sum(x => x.Qualified) 
+0

我正在使用ASP.NET Core 1.1,而VS2015編輯器的'Intellisense'不能識別'@ Model.Sum(...)'這怎麼解決? – nam

+0

現在正在工作 - 正如我在上面的評論中所解釋的。 – nam