2016-07-11 3 views
0

私はまだC#の初心者ですが、私の問題を解決する解決策が見つかりませんでした。c#別のソートされていない配列を比較します

私は数ヶ月前にこれを作っていますが、今まではうまくいきましたが、将来的にグループが大きくなるといくつかの問題を予見できます。 私はすべての種類のものを含むログファイルを持っていますが、私はすべての生徒の「開始」と「停止」時間にのみ興味があります。毎週、このコードを実行して、誰もが正しい時間に開始し停止したかどうかを確認します。すべての生徒が毎日入ってくるわけではありません。週に3回のスタートと3回の停止があります.私は各学生の参考値で配列を作っています(例えばStudent1StartTimes)。

今、コードは、特定の生徒のエントリのログファイルを2回スキャンします。開始時間に1回、停止時間に1回。これらは一時配列に配置され、参照値と比較されます。彼らは正確に一致する必要はありません、数分オフにいいです。 特定の生徒のエントリの順序は、開始/終了時間が入力された日によって異なるため、重要です。

例を以下に示します。前にも述べたように、それは私の目的のために働くようですが、学生の数が増えれば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 

} 
関連する問題