2011-08-19 5 views
2

나는 면도칼 구문을 다음 한MVC 3 모델의 foreach 필터

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

난 단지 모델의 기록을 볼에 foreach 루프를 필터링하려는 경우 p.City = "뉴욕"

무엇 내 구문은 어떻게 생겼을 까?

나는이 권리를 explaing하길 바래.

감사

답변

6
@foreach (var p in Model.Where(i => i.City == "New York")) { 
    <b>@p.Age</b> 
} 
당신은 당신이 당신의보기 나하지 "뉴욕"의 도시가없는 다른 모델 기록을 필요 여부에 따라 컨트롤러 액션이 필터링을 수행하도록 결정할 수 있습니다

.

+0

+1 컨트롤러에서 필터링이 수행 될 수 있음을 지적합니다. 나는 컨트롤러가 이것에 적합한 장소라고 생각한다. 그것은보기에 적합하지 않은 것 같습니다. –

+0

멋진 감사 –

+0

@ Jamie - 나는 그것이 언제나처럼 달려 있다고 생각한다. City에서 볼 때 그룹화를 수행하고있는 경우 일 수 있습니다.이 경우 필터링되지 않은 컬렉션을 통해 보내고보기에서 필터링하는 것이 좋습니다. 또한 컬렉션이'IQueryable '인지 여부를 알지 못하며 필요할 때까지 실행을 연기합니다. –

3

"Where"와 같은 LINQ (http://msdn.microsoft.com/en-us/library/bb397896.aspx) 확장 메서드를 사용하여 필터를 적용 할 수 있습니다. 또한 외부 "@ {}"가 필요하지 않은 경우 foreach 앞에 "@"를 붙이면 Razor가 의미하는 것을 알아낼 수 있습니다. 다음과 같음 :

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