2011-08-19 29 views
2

我有以下的剃刀語法MVC 3模型的foreach過濾

@{ 
    foreach (var p in Model) 
    { 
     <b>@p.Age</b> 
    } 
    } 

我想foreach循環過濾,僅看型號記錄,其中p.City =「紐約」

什麼我的語法看起來像什麼?

我希望我解釋這個權利。

感謝

回答

6
@foreach (var p in Model.Where(i => i.City == "New York")) { 
    <b>@p.Age</b> 
} 

,可能會決定做控制器動作這個過濾,這取決於你是否需要沒有一個城市的「紐約」的在您的視圖或不是其他型號的記錄。

+0

+1表示可以在控制器中完成過濾。我認爲控制器是適合這個的地方。它看起來不太適合這種觀點。 –

+0

非常感謝 –

+0

@Jamie - 我認爲這取決於(一如既往!)。這可能是因爲他們在City視圖中進行了一些分組,在這種情況下,它認爲通過視圖中未過濾的集合和過濾器發送是有意義的。另外,我們不知道這個集合是否是'IQueryable '並且延遲執行直到需要 –

3

您可以使用LINQ(http://msdn.microsoft.com/en-us/library/bb397896.aspx)擴展方法(如「Where」)來應用過濾器。你也不需要外部的「@ {}」,你可以在foreach前面加一個「@」,Razor會找出你的意思。例如:

@foreach (var p in Model.Where(item => item.City == "New York")) { 
    <b>@p.Age</b> 
}