c# - 在 C# List 中查找重复字符串的索引

标签 c# arrays list

<分区>

我有一个字符串列表:

["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);

返回 IGroupingIEnumerable ,它本身就是一个匿名类型的 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);

这将返回 intIEnumerable

关于c# - 在 C# List 中查找重复字符串的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18547993/

相关文章:

c# - 截断查询字符串并返回干净的 URL C# ASP.net

javascript - 尝试从另一个数组创建重复值的数组,为什么我的代码不起作用?

c# - 在 form1 中检测到 form2 已关闭

c++ - 遍历 vector 并将元素复制到 C 数组中

javascript - JS中如何将json转为树形数组?

c# - 在列表上引用不改变值

python - 创建相应的字母数字元素列表

python - For 循环提取子列表/python 的项目

c# - 构建是否可以在一个平台上成功而在另一个平台上失败?

c# - 将自己的字形添加到 uwp 项目