2017-10-19 7 views
-1

私はC#でExamシステムを作成しています。私は結果を作成している、私はリストボックス1の答えがあり、別のリストボックス2で正しい答えを持っている、私の問題はリストボックスの値が比較される必要があり、結果はそのベースで生成する必要があります。値の半分が学生に合っていれば、それ以外の場合は失敗します。 このコードは次のとおりですが動作しません。アイテムを一致させて結果を作成する

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

ifステートメントで2つのリストのうちの1つが "listBoxSanswers"である必要があります – Bambuk

+0

"それは機能しません"と言うと、正確にはどういう意味ですか?エラーがスローされているか、期待した結果が得られませんか? – RH6

+0

2番目のリストボックスの共通項目を3番目のリストボックスにコピーしないことを意味します。 listbox1とlistbox2の項目を比較し、共通項目をlistbox3に追加する必要があります。 –

答えて

0

、あなたのアプローチを使用する場合は、短い方法をしたい場合は、あなたがlistBoxSanswers

に二つのリストの1つを変更するために持っているよりも、ループせずに、この行を試すことができます。

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

EDIT: 大丈夫ああ、あなたがデータソースとしてのDataTableを持っているので。

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

たぶん、あなたはあなたのDisplayMemberある右の列にSelect(r => r[0])を適応させる必要があります:あなたはこのようにそれを行うことができるよりも 。

+0

コードが次のエラーをスローする 'System.Data.DataRowView'型のオブジェクトをキャストして 'System.String'を入力できません。 –

+0

私の回答を編集しました – Bambuk

関連する問題