2016-06-11 8 views
0

Angegebene Cast ist nicht gültig, bitte sagen Sie mir eine Möglichkeit, max/min Wert von allen Werten im Array, nicht aus dem spezifischen Index zu erhalten.Angegebener Cast ist nicht gültig, alle Werte von gezackten Array erhalten

int max = jArray.Cast<int>().Max(); 
       System.Console.Write("\n\n Max marks:" + max); 

Erklärung gezackten Array:

string TotalStudents; 

     System.Console.Write("Enter the Total No. Of Students:"); 
     TotalStudents = Console.ReadLine(); 

     int value; 
     bool result = int.TryParse(TotalStudents, out value); 

     JaggedArray jag = new JaggedArray(value); 

     int[][] jArray = new int[jag.noOfStudents][]; 



     for (int i = 0; i < jag.noOfStudents; i++) 
     { 


      System.Console.Write("Enter the Total No. Of Subjects of Student:" + i + ":\t"); 
      string TotalSubjects = Console.ReadLine(); 

      int Subjectvalue; 
      bool Sresult = int.TryParse(TotalSubjects, out Subjectvalue); 
      jArray[i] = new int[Subjectvalue]; 

      for (int a = 0; a < Subjectvalue; a++) 
      { 
       System.Console.Write("\nEnter the marks obtained of subject:" + a + " of student " + i + ":\t"); 
       string TotalMarks = Console.ReadLine(); 

       int Marksvalue; 
       bool Mresult = int.TryParse(TotalMarks, out Marksvalue); 
       jArray[i][a] = Marksvalue; 

      } 

Antwort

1

JArray ist ein verzweigtes Array (Array von Arrays), das ist, warum bestimmte cast int ungültig ist.

Ich würde empfehlen, die Struktur mit SelectMany zu glätten und nach Max suchen.

int max = jArray.SelectMany(x=>x.ToArray()).Max();