我正在用c#创建一个考试系统。我正在创建结果,我在listbox1中有答案并且在另一个listbox2中有正确的答案,我的问题是应该比较列表框中的值,并且应该在其基础上生成结果。如果一半的值匹配,则学生通过,否则失败。 我的代码如下,但它不起作用。
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());
}
}
}
答案 0 :(得分:0)
如果您想使用您的方法,则必须将两个列表中的一个更改为listBoxSanswers
如果你想要一个较短的方式,没有循环,你可以尝试这一行:
listBox3.Items.AddRange(listBoxActAnswers.Items.Cast<string>().ToList().Intersect(listBoxSanswers.Items.Cast<string>().ToList()).ToArray());
修改强> 哦好的,所以你有一个DataTable作为DataSource。 你可以这样做:
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右侧列。