C#尝试返回列表中重复项的索引,但循环只返回第一个重复项的索引

C#尝试返回列表中重复项的索引,但循环只返回第一个重复项的索引,c#,list,indexing,foreach,duplicates,C#,List,Indexing,Foreach,Duplicates,每当我运行它时,我都希望显示列表项的索引。然而,当我循环搜索列表中的一个项目时,它会给我多个索引,但列表中只有项目的索引排在第一位。因此,如果该列表项有两个实例,它将给出1和1的索引(示例) Console.WriteLine(“\n\n按enter键以显示重复的团队列表”); Console.ReadLine(); List teamList=新列表(); 团队列表。添加(“小熊”); 团队列表。添加(“红袜”); 球队名单。添加(“洋基队”); 团队列表。添加(“小熊”); 球队名单。添加(

每当我运行它时,我都希望显示列表项的索引。然而,当我循环搜索列表中的一个项目时,它会给我多个索引,但列表中只有项目的索引排在第一位。因此,如果该列表项有两个实例,它将给出1和1的索引(示例)

Console.WriteLine(“\n\n按enter键以显示重复的团队列表”);
Console.ReadLine();
List teamList=新列表();
团队列表。添加(“小熊”);
团队列表。添加(“红袜”);
球队名单。添加(“洋基队”);
团队列表。添加(“小熊”);
球队名单。添加(“洋基队”);
球队名单。添加(“洋基队”);
foreach(团队列表中的字符串团队)
{
控制台。WriteLine(团队);
}
WriteLine(“在列表中选择一项:”);
string teamSelected=Console.ReadLine();
列表索引列表=新列表();
if(团队列表包含(团队选定))
{
foreach(团队列表中的字符串团队)
{
如果(团队==teamSelected)
{
Console.WriteLine(teamList.IndexOf(teams));
}
}
}
else{Console.WriteLine(“这不是一个选项!”);}

您要求它使用
.IndexOf()
为您提供
团队的索引。即使有多个索引具有相同的值,例如
团队列表[0]
团队列表[3]
具有相同的值,
.IndexOf()
始终会返回找到的第一个索引

要解决此问题,您应该使用
for
循环,而不是像这样的
foreach
循环:

for(int index = 0; index < teamList.Count; index++)
    if(teamList[i] == teamSelected)
        Console.WriteLine(i);
for(int index=0;index

List.Count
获取
List
中存储的项目数量

好的,谢谢!这真的很有帮助,我现在明白是什么导致了问题@如果帖子解决了您的问题,请单击左侧的灰色勾号将其标记为答案。您也可以尝试以下奇怪的方法:
var DistinctResult=teamList.Distinct().ToList()
var duplicateResultsIndex=teamList.Select((s,idx)=>teamList.FindIndex(idx,ss=>ss==“yankees”)).Distinct().ToList()
for(int index = 0; index < teamList.Count; index++)
    if(teamList[i] == teamSelected)
        Console.WriteLine(i);