匹配多个狗品种DropDown列表与结果逻辑

时间:2018-06-05 16:08:54

标签: asp.net vb.net

我完全坚持这一点。我希望这里的一位专家可以帮助我。

我有一个列出调查结果的页面。用户必须猜测狗的前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。

任何建议将不胜感激!提前谢谢。

- 克里斯

1 个答案:

答案 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!";

希望他的帮助!