在C#List中查找重复项索引的最优雅方法是什么

Kev*_*sen 9 c# search list duplicates

我有一个List<string>包含重复的东西,我需要找到每个的索引.

除了循环遍历所有项目之外,最优雅,最有效的方法是什么.我在.NET 4.0上,所以LINQ是一个选项.我做了大量的搜索并连接找到任何东西.

样本数据:

var data = new List<string>{"fname", "lname", "home", "home", "company"}();
Run Code Online (Sandbox Code Playgroud)

我需要得到"家"的索引.

Guf*_*ffa 21

您可以从包含其索引的每个项目创建一个对象,然后对该值进行分组并过滤掉包含多个对象的组.现在您有一个分组列表,其中包含包含文本及其原始索引的对象:

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)