我有一个字符串列表:
["String1"]
["String2"]
["String1"]
["String3"]
["String2"]
["String1"]
Run Code Online (Sandbox Code Playgroud)
我需要在List中搜索并找到"String1"的索引,并计算"String1"发生的次数.我已经回顾了这个答案,但我是C#中这种类型的编码的新手,我不清楚如何提取索引值,所以如果你能解释如何使用解决方案,那就太好了!
p.s*_*w.g 12
来自其他答案的代码,我将在这里复制以供参考,
var duplicates = data
.Select((t,i) => new { Index = i, Text = t })
.GroupBy(g => g.Text)
.Where(g => g.Count() > 1);
Run Code Online (Sandbox Code Playgroud)
返回IEnumerable的IGrouping,它本身就是一个IEnumerable匿名类型.您可以从结果中获取索引,如下所示:
foreach(var group in duplicates)
{
Console.WriteLine("Duplicates of {0}:", group.Key)
foreach(var x in group)
{
Console.WriteLine("- Index {0}:", x.Index)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您只想获取索引列表,则可以使用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);
Run Code Online (Sandbox Code Playgroud)
这将返回IEnumerable的int的.
| 归档时间: |
|
| 查看次数: |
3631 次 |
| 最近记录: |