2017-10-12 10 views
0

Ich verwende derzeit ASP.NET Core MVC für meine Anwendung und ich bin mir nicht sicher, wie Sie das Problem anzugehen.Speichern von mehr als einem Array in einem anderen Array

sagen, dass ich zwei Array von Doppel-Typ

double[] questionOne = {1,4,5,2,4}; 
double[] questionTwo = {3,2,4,5,2}; 

ich verwenden möchte, ein Verfahren verketten sie zusammen und speichern sie in möglicherweise ein Wörterbuch haben, so dass der gespeicherte Wert ist so etwas wie

stud1 | 1,3 
stud2 | 4,2 
stud3 | 5,4 
stud4 | 2,5 
stud5 | 4,2 

, so kann ich die Werte abrufen und den Gesamtwert für jeden Schüler berechnen.


I weiß nicht wie viele Fragen wird es geben.
Ich weiß auch nicht, wie viele Studenten dort sein werden.
Ich kann für diese Werte später eine Schleife machen, aber für jetzt ist es ein fester Wert.

Sollte ich die Werte in einem Wörterbuch, einer Liste oder einem Tupel speichern?

Danach, wie kann ich die Methode so aufrufen, dass ich den Wert zurückgeben und in meinem "View" anzeigen kann?
Ich brauche nicht die Werte in einer Tabelle zu sein, eine einfache rohe Ausgabe zu überprüfen, die Algorithmus-Idee wird tun, wenn möglich.

+1

Vielleicht ein Wörterbuch von Namen und Tupeln? –

+0

Etwas wie ein 'Dictionary >'? – David

Antwort

1

Da .Net 4.7 Sie diesen Code verwenden können:

using System; 
using System.Linq; 

public class Program 
{ 
    public static void Main() 
    { 
     double[] questionOne = {1, 4, 5, 2, 4}; 
     double[] questionTwo = {3, 2, 4, 5, 2}; 
     var combined = questionOne.Zip(questionTwo, (q1, q2) => (q1, q2)).ToList(); 
     Console.WriteLine(combined); 
    } 
} 
+0

Argl, sorry Sefe, ich habe gerade nach Ihnen ... – schglurps

+0

Danke für die Antwort! Ich verwende keine Konsole für meine Anwendung. Weißt du zufällig, wie ich es meiner Sichtweise weitergeben kann? Ich habe versucht, ViewData, aber es funktioniert nicht – MaryLim

+0

Bitte schreiben Sie Ihren Code ... – schglurps

0

Sie diese Struktur verwenden:

Dictionary<string, string[]> myDictionary= new Dictionary<string, string[]>(); 

dann brauchen Sie nur einen Algorithmus, der den Inhalt wie fügt:

for(int i=0; i<array1.Length; i++) { 
    String[] data = new String[2]; 
    data[0] = array1[i]; 
    data[1] = array1[i]; 
    myDictionary.Add("student"+i, data); 
} 
1

Sie LINQ verwenden können:

List<Tuple<double, double>> tuples = 
    questionOne.Zip(questionTwo, (one, two) => Tuple.Create(one, two)).ToList(); 

That kombiniert die Anzahl Arrays. Sie können für die Schüler das Gleiche tun:

string[] students = new string[] {"stud1", "stud2", "stud3", "stud4", "stud5"}; 
Dictionary<string, Tuple<double, double>> result = students 
    .Zip(tuples, (student, tuple) => new { student, tuple }) 
    .ToDictionary(entry => entry.student, entry => entry.tuple); 

Sie können here das Ergebnis überprüfen.

+0

Danke für die Antwort! Diese Methode wäre großartig, wenn ich die Anzahl der Schüler und Tests kenne, die ich durchlaufen muss – MaryLim

Verwandte Themen