私はまだ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
。解決すべき問題はない。 – Servy
おそらくhttp://codereview.stackexchange.com/ – HimBromBeere
に行ってください。また、並列拡張を調べてください。割り当てが許可されている場合は、HashSetも参照してください。 – Jay