2017-10-19 2 views
-1

Ich erstelle ein Exam-System in C#. Ich erstelle Ergebnis, ich habe Antworten in einer Listbox1 und richtige Antworten in einer anderen Listbox2, mein Problem ist, Werte in den Listboxen sollten verglichen werden und Ergebnis sollte auf seiner Basis generiert werden. Wenn die Hälfte der Werte übereinstimmt, ist der Schüler bestanden, andernfalls scheitert es. Mein Code dafür folgt, aber es funktioniert nicht.Passende lisboxes Artikel und Ergebnis erstellen

for(int intCount = 0; intCount < listBoxSanswers.Items.Count;intCount++) 
{ 
    for (int intSubCount = 0; intSubCount < listBoxActAnswers.Items.Count; intSubCount++) 
    { 
     if (listBoxActAnswers.Items[intCount].ToString() == listBoxActAnswers.Items[intSubCount].ToString()) 
     {  
      listBox3.Items.Add(listBoxActAnswers.Items[intCount].ToString()); 
     } 
    } 
} 
+1

in Ihrer if-Anweisung sollte eine der beiden Listen "listBoxSanswers" sein – Bambuk

+0

Wenn Sie sagen "Es funktioniert nicht" was meinst du genau? Wird ein Fehler ausgegeben oder erhalten Sie nicht die erwarteten Ergebnisse? – RH6

+0

Funktioniert nicht, es kopiert nicht die allgemeinen Elemente von zwei Listboxen in der dritten Listbox. Ich möchte, dass Elemente von listbox1 und listbox2 verglichen werden und allgemeine Elemente zu listbox3 hinzugefügt werden sollen. –

Antwort

0

Wenn Sie Ihren Ansatz verwenden möchten, als eine der beiden Listen zu listBoxSanswers

ändern müssen, wenn Sie einen kürzeren Weg wollen, ohne die Schleifen, können Sie diese Zeile versuchen:

listBox3.Items.AddRange(listBoxActAnswers.Items.Cast<string>().ToList().Intersect(listBoxSanswers.Items.Cast<string>().ToList()).ToArray()); 

EDIT: Oh gut, so haben Sie eine Datatable als Datasource. als Sie es auf diese Weise tun können:

listBox3.Items.AddRange(listBoxActAnswers.Items.Cast<DataRowView>().Select(r => r[0]).ToList().Intersect(listBoxSanswers.Items.Cast<DataRowView>().Select(r => r[0]).ToList()).ToArray()); 

Vielleicht sollten Sie Select(r => r[0]) in die rechte Spalte anzupassen, die Ihre Display ist.

+0

Ihr Code wirft folgenden Fehler Kann Objekt des Typs 'System.Data.DataRowView' nicht umwandeln, um 'System.String' einzugeben. –

+0

Ich habe meine Antwort bearbeitet – Bambuk