我如何创建一个if语句,从CSV文件输出具有相同分钟数的两个学生的名字



我试图从CSV文件中输出具有相同分钟数的学生的两个名字

输入文件

ID,姓,名,电话号码,分钟数

1,能源部,约翰,905-555-5555,1020

2,巴内特,考特尼,905-666-6666,112

3,莫里森,吉姆,905-777-7777,912

4,能源部,简,905-222-2222,1020

5,米切尔,乔妮,416-333-3333,112

(忽略每行之间的空格)

这里Courtney和Joni有相同的最低上场时间…我需要输出它们的名字

我的代码是:
// open input file
StreamReader sr = new StreamReader("input.txt");
{
// initialize variables
int x=0,total= 0; double average=0;
string? titles,lastFirst;
string [ ] info, titlesSplit; int [ ] mins= new int [5]; string[,] myName = new string[5,5];
{
titles =sr.ReadLine();
titlesSplit = titles.Split(',');
for (x=0;x < 5; x++)
{
System.Console.Write(titlesSplit[x] + " ");
}
System.Console.WriteLine();
System.Console.WriteLine("-------------------------------------------------");
for(x = 0; x < 5 ; x++)
{  
lastFirst = sr.ReadLine(); 
info =  lastFirst.Split(',');

for (int k =0; k<5; k ++)
{
myName[x,k]= info[k];
}
}
int maxMin = Int32.MinValue;
int minMin = Int32.MaxValue;
string? maxName = " ";
string? maxLastName = " ";
string? minName=" ";
string? minLastName = " ";
for (int l = 0; l<5; l++)
{
for (int k =0; k <5;k++)
{
System.Console.Write(myName[l,k] + " ");
}
System.Console.WriteLine();

if (Convert.ToInt32(myName[l,4]) > maxMin)
{
maxMin = Convert.ToInt32(myName[l,4]);
maxName = myName[l,1];
maxLastName= myName[l,2];
//if statement to output two names of students who have the same number of mins 
}

if(Convert.ToInt32(myName[l,4]) > minMin );
{
minMin= Convert.ToInt32(myName[l,4]);
minName= myName[l,1];
minLastName= myName[l,2];
//if statement to output two names of students who have the same number of 
mins 

}  
total = (total + Convert.ToInt32(myName[l, 4]));
} 
average = (total / 5);
System.Console.WriteLine("-------------------------------------------------");
System.Console.WriteLine("Minimum: " + minName +" " + minLastName +" " + minMin);
System.Console.WriteLine("Maximum: " + maxName +" " + maxLastName+ " "+ maxMin);
System.Console.WriteLine("Average: " + average);
}

}
sr.Close(); 

我冒昧地对您的代码做了一些修改。例如,我认为为您的行条目创建一个模型类是个好主意:

public class Person
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public int Minutes { get; set; }
}

输出分钟数最少的条目名称的代码可能如下所示:

// open input file
using StreamReader sr = new StreamReader(Path);
List<Person> Persons = new();
_ = sr.ReadLine(); // ignore first line
while (!sr.EndOfStream)
{
var line = sr.ReadLine();
var values = line!.Split(',');
Persons.Add(new Person
{
ID = int.Parse(values[0]),
LastName = values[1],
FirstName = values[2],
PhoneNumber = values[3],
Minutes = int.Parse(values[4])
});
}
foreach(var person in Persons.OrderBy(p => p.Minutes).GroupBy(m => m.Minutes).First())
{
Console.WriteLine(person.FirstName);
}

为解析添加一些更多的检查可能是个好主意,如果你有大量的数据,可能会考虑一些性能改进,但总的来说,这应该给一些想法。