하고있는 경우가 있습니다 ToList()
쿼리가 시간에 당신이 그들을 기대하는 순서대로 실행 확인하는 것이 중요 할 수 있습니다 LINQ 쿼리에 있습니다. 그러나 이러한 시나리오는 드물며 진정으로 실행될 때까지 아무도 걱정하지 않아도됩니다.
간단히 말해, IEnumerable
반복이 필요할 때만 사용 IList
하고 직접 색인을 작성하고 동적 크기의 배열이 필요할 때 사용하십시오 (고정 크기 배열에서 색인을 생성 해야하는 경우 표준 배열을 사용하십시오).
실행 시간의 일에 관해서는, 당신은 항상 같은 목록을 사용할 수 있습니다 IEnumerable
그래서를 돌려 주시기 변수 IEnumerable
을 수행하여 .ToList();
int로서 매개 변수에, 또는 통과 IEnumerable
실행하여 .ToList()
온 IEnumerable
이 바로 그때 강제로 실행합니다. 강제로 실행을 .ToList()
할 때마다 방금 수행 한 IEnumerable
변수 에 매달리지 않고 다시 실행하지 않으면 LINQ 쿼리의 반복이 불필요하게 두 배가됩니다.
MVC와 관련하여 여기에 특별히 주목할 것은 없습니다. 그것은 .NET의 나머지 부분과 동일한 실행 시간 규칙을 따를 것입니다. 이전의 지연된 실행 의미로 인해 혼란스러워하는 사람이있을 수 있다고 생각합니다. 아니. 지연된 실행 시맨틱은 처음에는 모든 사람을 혼란스럽게합니다 (그리고 나중에는 좋은 결과를 위해 터치하기 까다로울 수 있습니다). 그러나 LINQ 쿼리가 두 번 실행되지 않거나 다른 코드와 비교하여 특정 순서로 실행되도록 요구 할 때까지 걱정하지 마십시오.이 시점에서 변수를 자신에게 할당하십시오. 강제로 실행하면 괜찮을 것입니다.