我是C#的新手并且到处寻找这个但是如果已经被问到的话就找不到答案.我试图使用for循环来比较2个列表:
IList<string> List1 = new List<string> { usr.User1, usr.User2, usr.User3, usr.User4 };
IList<string> List2 = new List<string>{ "Tim", "Bob", "Brian", "Paul" };
Run Code Online (Sandbox Code Playgroud)
基本上我希望只有4个可能的匹配,所以只有这些可能的匹配应该计算:
usr.User1 == "Tim", // e.g. User1 has to be Tim etc.
usr.User2 == "Bob",
usr.User3 == "Brian",
usr.User4 == "Paul"
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望返回一个值为0-4的int,所以如果上面的所有匹配都成功,那么它将返回4,如果没有匹配成功则返回0等.
我试过了:
int score = 0;
for (int i = 0; i <= List2.Count; i++)
{
if (List1[i] == List2[i])
{
score++;
}
}
Run Code Online (Sandbox Code Playgroud)
但目前正在获取IndexOutOfRangeException.非常感谢.
放下=
,你想要停止上限.
for (int i = 0; i < List2.Count; i++)
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用zip linq:
int score = List1.Zip(List2, (a,b) => a == b ? 1 : 0).Sum();
Run Code Online (Sandbox Code Playgroud)