Averaging students' scores
You've got students and their scores here. I assume that student without scores is meaningless, as well as scores without students. It would be nice to combine that data into single object:
public class StudentScores {
    
    // Auto-property guarantees that student name defined once in constructor
    // and will not accidentally change.
    public string Name { get; }
        
    // Scores count can be different for different students.
    // Private field guarantees that scores will not be messed up by other classes.
    // Otherwise some student could access scores and change them, 
    // which would lead to errors.
    private readonly List&lt;int&gt; scores = new List&lt;int&gt;();

    public StudentScores(string name) {
        Name = name;
    }

    // We still need a method to add scores to our encapsulated list.
    // We could implement Clear() or RemoveAt() public methods later.
    public void AddScore(int score) {
        scores.Add(score);
    }

    public double Average() {
        if (scores.Count &gt; 0)
            return scores.Average();
        else
            return 0;

        // Or simple: return scores.Count &gt; 0 ? scores.Average() : 0;
    }

    // Nicer way to print data: student name and all scores separated by empty space.
    public override string ToString() {
        return $&quot;{Name} {string.Join(&quot; &quot;, scores)}&quot;;
    }
}

Without comments it's only 20 lines long:
public class StudentScores
{
    public string Student { get; }

    private readonly List&lt;int&gt; scores = new List&lt;int&gt;();

    public StudentScores(string student)
        =&gt; Student = student;

    public void AddScore(int score)
        =&gt; scores.Add(score);

    public double Average()
        =&gt; scores.Count &gt; 0 ? scores.Average() : 0;

    public override string ToString()
        =&gt; $&quot;{Student} {string.Join(&quot; &quot;, scores)}&quot;;
}

Now your syntax in Main is much nicer:
static void Main(string[] args) {

    string[] names = {&quot;Morgan&quot;, &quot;Bowie&quot;, &quot;Ananya&quot;};

    var morgan = new StudentScores(names[0]);

    // Determine how much scores has student.
    Console.WriteLine(&quot;Enter number of test scores for &quot; + names[0]);
    int count = int.Parse(Console.ReadLine());
    
    for (int i = 0; i &lt; count; i++) {
       morgan.AddScore(int.Parse(Console.ReadLine()));
    }

    var bowie = new StudentScores(names[1]);
    // ...
    
    var ananya = new StudentScores(names[2]);
    // ...

    Console.WriteLine(morgan.ToString() + &quot; Average score: {0:N2}&quot;, morgan.Average());
    Console.WriteLine(bowie.ToString() + &quot; Average score: {0:N2}&quot;, bowie.Average());
    Console.WriteLine(ananya.ToString() + &quot; Average score: {0:N2}&quot;, ananya.Average());
}

You could improve your Main() further creating single loop for all students:
static void Main(string[] args) {

    string[] names = {&quot;Morgan&quot;, &quot;Bowie&quot;, &quot;Ananya&quot;};
    List&lt;StudentScores&gt; scores = new List&lt;StudentScores&gt;();

    foreach(var name in names) 
    {
        var student = new StudentScores(name);
        Console.WriteLine($&quot;Enter number of test scores for {name}&quot;);
        int count = int.Parse(Console.ReadLine());
        for (int i = 0; i &lt; count; i++)
           student.AddScore(int.Parse(Console.ReadLine()));
        scores.Add(student);
    }

    foreach(var score in scores)
        Console.WriteLine($&quot;{score.ToString()}, Average score: {score.Average():N2}&quot;);

You could remove Average() method and move calculations directly to ToString(), but I think it's nice to have methods for such things.