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