EF 쓰는 프로젝트인데 프로파일러 켜놓고 보니까 같은 쿼리가 두 번씩 찍혀서 원인 찾다가 이 부분을 발견했습니다.
IEnumerable<User> users = db.Users.Where(u => u.Active);
if (users.Any())
{
foreach (var u in users)
{
// 처리...
}
}
users를 변수에 딱 담아놨으니까 한 번만 조회될 줄 알았는데, Any()에서 한 번 나가고 foreach에서 또 한 번 나가더라고요. 데이터가 많은 테이블이라 이게 성능에 꽤 영향이 있어요. 지연 실행? 이런 개념 때문이라는 것 같긴 한데 왜 변수에 넣어놔도 매번 실행되는지 궁금합니다. 그리고 이걸 어떻게 하면 한 번만 돌게 만들 수 있나요? 조언 부탁드려요.