<分区>
我有一个字符串列表:
["String1"]
["String2"]
["String1"]
["String3"]
["String2"]
["String1"]
我需要在列表中搜索并找到“String1”的索引,并计算“String1”出现的次数。我评论了this answer但我是 C# 中此类编码的新手,我不清楚如何提取索引值,所以如果您能解释如何使用该解决方案,那就太好了!
<分区>
我有一个字符串列表:
["String1"]
["String2"]
["String1"]
["String3"]
["String2"]
["String1"]
我需要在列表中搜索并找到“String1”的索引,并计算“String1”出现的次数。我评论了this answer但我是 C# 中此类编码的新手,我不清楚如何提取索引值,所以如果您能解释如何使用该解决方案,那就太好了!
最佳答案
另一个答案的代码,我将其复制在这里以供引用,
var duplicates = data
.Select((t,i) => new { Index = i, Text = t })
.GroupBy(g => g.Text)
.Where(g => g.Count() > 1);
返回 IGrouping
的 IEnumerable
,它本身就是一个匿名类型的 IEnumerable
。您可以像这样从结果中获取索引:
foreach(var group in duplicates)
{
Console.WriteLine("Duplicates of {0}:", group.Key)
foreach(var x in group)
{
Console.WriteLine("- Index {0}:", x.Index)
}
}
但是,如果您只想获取索引列表,则可以使用 SelectMany
扩展方法:
var duplicateIndexes = data
.Select((t,i) => new { Index = i, Text = t })
.GroupBy(g => g.Text)
.Where(g => g.Count() > 1)
.SelectMany(g => g, (g, x) => x.Index);
这将返回 int
的 IEnumerable
。
关于c# - 在 C# List 中查找重复字符串的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18547993/