2016-07-11 1 views
0

저는 C#의 초보자이며 문제를 해결하는 해결책을 찾지 못했습니다.C# 다른 정렬되지 않은 배열을 비교하십시오.

저는 몇 달 전에 이것을 만들었지 만 지금까지는 충분히 잘 작동했지만 미래에 그룹이 커지면 몇 가지 문제를 예견 할 수 있습니다. 모든 종류의 내용을 담고있는 로그 파일이 있지만 모든 학생의 "시작"및 "중지"시간에만 관심이 있습니다. 매주 나는이 코드를 실행하여 모든 사람이 올바른 시간에 시작하고 멈췄는지 확인합니다. 모든 학생들이 매일 같이 들어오는 것은 아닙니다. 어떤 학생은 일주일에 3 번의 시작과 3 번의 수업 만이 있으며, 일부 수업은 4 또는 5입니다. 각 학생에 대한 참조 값을 가진 배열을 만들었습니다 (예 : Student1StartTimes).

지금 코드는 특정 학생의 항목에 대해 로그 파일을 두 번 검색합니다. 시작 시간에 한 번, 정지 시간에 한 번. 이것들은 임시 배열에 배치되고 참조 값과 비교됩니다. 정확히 일치 할 필요는 없지만 몇 분 후에 문제가 해결됩니다. 특정 학생의 입학 순서는 시작/종료 시간이 입력 한 날짜에 따라 다를 수 있으므로 중요합니다.

예가 아래에 나와 있습니다. 이전에 말했듯이, 그것은 제 목적을 위해 작동하는 것처럼 보입니다.하지만 학생들의 양이 늘어남에 따라 for 루프의 양은 훨씬 더 효율적으로 수행 될 수 있다고 생각합니다.

List<LogEntry> TempList = new List<LogEntry>(); 

foreach (LogEntry log in LogFile) 
{ 
    if (log.Student == "student1" && log.Type.ToString().Equals("Start")) 
    { 
     TempList.Add(log); 
    } 
} 
for (int i = 0; i < TempList.Count; i++) 
{ 
    Console.WriteLine("The difference in time is " + TimeDifference(TempList[i].StartTime, Student1StartTimes[i]) + " minutes.");   
} 
TempList.Clear(); //Clear the temporary list 

foreach (LogEntry log in LogFile) 
{ 
    if (log.Student == "student2" && log.Type.ToString().Equals("Start")) 
    { 
     TempList.Add(log); 
    } 
} 
for (int i = 0; i < TempList.Count; i++) 
{ 
    Console.WriteLine("The difference in time is " + TimeDifference(TempList[i].StartTime, Student2StartTimes[i]) + " minutes.");  
} 
TempList.Clear(); //Clear the temporary list 
+3

; 해결해야 할 문제는 없습니다. – Servy

+1

아마도 http://codereview.stackexchange.com/ – HimBromBeere

+0

에 가야하고 병렬 확장을 살펴 보는 동안 할당이 허용되면 HashSet을 참조하십시오. – Jay

답변

0

학생을 컬렉션에 저장 하시겠습니까?

만약 학생 루프 내에서 각 학생을 통해 이렇게 루프 할 수 있습니다 다음 로그를 통해 루프 : 나는 코드가 이미 작동하기 때문에 오프 주제로이 질문을 닫으 투표 해요

foreach (Student s in Students){ 

    foreach (LogEntry log in LogFile) 
    { 
     if (log.Student.equals(s) && log.Type.ToString().Equals("Start")) 
     { 
      TempList.Add(log); 
     } 
    } 
    for (int i = 0; i < TempList.Count; i++) 
    { 
     Console.WriteLine("The difference in time is " + TimeDifference(TempList[i].StartTime, Student1StartTimes[i]) + " minutes.");   
    } 
    TempList.Clear(); //Clear the temporary list 

} 
관련 문제