我完全坚持这一点。我希望这里的一位专家可以帮助我。
我有一个列出调查结果的页面。用户必须猜测狗的前3个品种。然后,显示结果。 重要提示:用户正在猜测狗的三大品种,它们可以按任何顺序排列。
例如,用户会看到一张狗的照片,照片下方是三个下拉列表:
Dropdown_1 Dropdown_2 Dropdown_3
这些下拉列表中的每一个都包含相同的品种列表,例如Beagle,德国Shepard,Pug等。然后,用户为每个下拉列表选择一个(且仅一个)品种。
因此,在上面的示例中,用户将选择:
German Shepard Beagle Pug
现在,当显示答案/回复页面时,他们会看到他们的猜测是否与正确答案相符。
显然,写一些类似的东西会很容易:
If (BreedChoice1 = BreedChoice1Answer And BreedChoice2 = BreedChoice2Answer And BreedChoice3 = BreedChoice3Answer) Or
(BreedChoice1 = BreedChoice1Answer And BreedChoice2 = BreedChoice3Answer And BreedChoice3 = BreedChoice2Answer) Or
(BreedChoice1 = BreedChoice2Answer And BreedChoice2 = BreedChoice1Answer And BreedChoice3 = BreedChoice3Answer) Or
(BreedChoice1 = BreedChoice2Answer And BreedChoice2 = BreedChoice3Answer And BreedChoice3 = BreedChoice1Answer) Or
(BreedChoice1 = BreedChoice3Answer And BreedChoice2 = BreedChoice1Answer And BreedChoice3 = BreedChoice2Answer) Or
(BreedChoice1 = BreedChoice3Answer And BreedChoice2 = BreedChoice2Answer And BreedChoice3 = BreedChoice1Answer) Then
Response.Write("You Guessed ALL breeds correctly!")
End If
但我怎么会显示他们说的信息:"你猜对了两个品种"。一个说"你猜对了一个品种"?
请记住,选择1,2和3可以按任何顺序匹配答案1,2和3。
任何建议将不胜感激!提前谢谢。
- 克里斯
答案 0 :(得分:1)
要解决这个问题,最简单的方法是使用Intersect方法,并以不同的方式对代码进行分区。
首先,我建议我们将"答案"进入列表而不是将它们保存为单独的变量(因为您建议它们可以按任何顺序)。然后,您应该将提交的答案也放入集合中。
然后,您可以执行一个非常简单的Intersect来获取包含两者共有的元素的集合:
List<string> breeds = new List<string>() { "Beagle", "German Shepard", "Pug" };
List<string> choices = new List<string>() { "Beagle", "Pug", "Greyhound" };
int correctAnswers = breeds.Intersect(choices).Count();
int&#34; correctAnswers&#34;然后告诉你他们有多少是正确的。 (显然,如果你使用比字符串更复杂的东西,比如自定义&#34; Breed&#34;类,你可以使用一些Linq检查品种名称属性)。 然后,您可以使用一些整齐的字符串插值(字符串声明前面的$符号)来获取结果消息:
$"Congratulations, you guessed {correctAnswers} breeds correctly!";
希望他的帮助!