C# 比较不同的未排序数组

本文关键字:排序 数组 比较 | 更新日期: 2023-09-27 17:56:29

我仍然是 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

C# 比较不同的未排序数组

您是否将学生存储在集合中?

如果是这样,则在学生循环中

循环遍历日志:
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
}