匹配lisboxes项目并创建结果

问题描述:

我在c#中创建一个考试系统。我正在创建结果,我在listbox1中有答案,在另一个listbox2中有正确的答案,我的问题是应该比较列表框中的值,并且应该在其基础上生成结果。如果一半的数值符合学生通过否则失败。 我的代码如下,但它不起作用。匹配lisboxes项目并创建结果

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语句中,两个列表中的一个应该是“listBoxSanswers” – Bambuk

+0

当你说“它不工作”时,你的意思到底是什么?错误是被抛出还是你没有得到你期望的结果? – RH6

+0

不起作用意味着它不会复制第三个列表框中的两个列表框的常用项目。我想要比较listbox1和listbox2的项目,并将常见项目添加到listbox3。 –

如果你想用你的方法,比你要改变两个列表中的一个listBoxSanswers

如果你想有一个更短的路,不循环,你可以试试这个行:

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

编辑: 哦好吧,让你有一个数据表作为数据源。 比你可以这样来做:

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

也许你应该适应Select(r => r[0])到右列是你的DisplayMember。

+0

您的代码抛出以下错误无法将类型为“System.Data.DataRowView”的对象转换为键入“System.String”。 –

+0

我编辑了我的答案 – Bambuk