여기에 yield return
의 지연 평가 기능을 사용하여 접근하는 방법에 대한 아이디어가 있습니다. 다음과 같이 EventLogQuery
를 사용하여 쿼리의 실행을 감안할 때, 당신이 할 수 있습니다 : 당신이 다음 IEnumerable
에 좋아하는 LINQ 연산자를 사용하여 다음 쿼리를 실행 할 수 있습니다
public IEnumerable<EventRecord> QueryEventRecords(string queryString)
{
var query = new EventLogQuery("Application", PathType.LogName, queryString);
using (var reader = new EventLogReader(query))
{
EventRecord eventRecord;
while ((eventRecord = reader.ReadEvent()) != null)
{
yield return eventRecord;
}
}
}
. 바람직하지 않을 것 화면 페이징 사이의 반복자의 statefulness을 유지 -
var result = QueryEventRecords("*[System[(Level = 3)]]")
.Skip(10)
.Take(10)
.ToList();
원격 PC가 MVC 응용 프로그램에서 비행하지 않을 페이징, 말했다. 관심있는 검색어의 모든 이벤트를 원격 컴퓨터에서 미리 가져 와서 중앙 데이터베이스 (예 :
SCOM과 같은 엔터프라이즈 소프트웨어와 유사)에 저장하는 것이 좋습니다. 그런 다음 EF와 같은 ORM을 사용하여 여가 시간에 이벤트 데이터를 탐색 할 수 있습니다.