Я все еще новичок в C#, и я не нашел решение, которое исправляет мою проблему.C# сравнить различные несортированные массивы
Я сделал это пару месяцев назад, и до этого он работал достаточно хорошо, но я могу предвидеть некоторые проблемы в будущем, когда группа станет больше. У меня есть файл журнала, который содержит все виды материалов, но меня интересуют только «старт» и «остановка» всех учеников. Каждую неделю я запускаю этот код, чтобы проверить, все ли начаты и остановились в правильное время. Не каждый учащийся приходит каждый день: у некоторых есть только три стартовых и 3 остановки в неделю, у некоторых есть 4 или 5. Я создал массивы со справочными значениями для каждого ученика (например, Student1StartTimes).
В настоящий момент код дважды проверяет файл журнала для записей конкретного учащегося. Один раз для их времени начала и один раз для их времени остановки. Они попадают во временный массив и сравниваются с их ссылочными значениями. Они не должны точно соответствовать, в нескольких минутах ходьбы. Порядок записей конкретного учащегося важен, так как время начала/остановки может зависеть от того дня, когда они были введены.
Пример показан ниже. Как говорилось ранее, это работает для моей цели, но поскольку количество студентов увеличивается, так и количество циклов, и я чувствую, что это можно сделать гораздо эффективнее.
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