在两个List <string>中查找不同的匹配项

Pao*_*o B -1 c#

我是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.非常感谢.

wes*_*ton 5

放下=,你想要停止上限.

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)